有一个txt文件 格式如下
111117105000000001,111117105000000001=99122012570000,686501,0000001
111117105000000002,111117105000000002=99122013110000,118653,0000002
111117105000000003,111117105000000003=99122015150000,484460,0000003
111117105000000004,111117105000000004=99122011310000,437451,0000004
111117105000000005,111117105000000005=99122018500000,627604,0000005
111117105000000006,111117105000000006=99122012430000,029250,0000006
111117105000000007,111117105000000007=99122016070000,334081,0000007
111117105000000008,111117105000000008=99122013850000,564231,0000008
111117105000000009,111117105000000009=99122017340000,751953,0000009
111117105000000010,111117105000000010=99122017420000,108740,0000010
文件最小为6M多,10万行数据
我是这样操作的string[] temp = System.IO.File.ReadAllLines(SavePath, System.Text.Encoding.GetEncoding("gb2312"));
IDictionary<bool, ArrayList> dict = BusiNeobyCardImportBiz.ImportCard(temp);
public IDictionary<bool, ArrayList> ImportCard(string[] ListCard)
{
int Success = 0;//成功次数
int Failure = 0;//失败次数
IDictionary<bool, ArrayList> results = new Dictionary<bool, ArrayList>();
ArrayList arraylist = new ArrayList();
for (int i = 0; i < ListCard.Length; i++)
{
if (string.IsNullOrEmpty(ListCard[i]))
{
continue;
}
string[] cardNote = ListCard[i].Split(',');
if (cardNote.Length != 4||cardNote[0].Length!=18)
{
Failure++;
arraylist.Add(ListCard[i]);
continue;
}
if (this.Find(ExpEnter.Equal("CardNo", cardNote[0]), null).Count >= 1)
{
Success++;
continue;
}
BusiNeobyCardImport BusiNeobyCardImportModel = new BusiNeobyCardImport();
BusiNeobyCardImportModel.CardNo = cardNote[0];
BusiNeobyCardImportModel.Note1 = cardNote[0];
BusiNeobyCardImportModel.Note2 = cardNote[2];
BusiNeobyCardImportModel.Note3 = cardNote[3];
BusiNeobyCardImportModel.Status = "N";
OpResult result = BusiNeobyCardImportDal.Add(BusiNeobyCardImportModel);//添加到数据库
if (result.Success)
{
Success++;
}
else
{
Failure++;
arraylist.Add(ListCard[i]);
}
}
ArrayList listsuccess = new ArrayList();
listsuccess.Add(Success);
results.Add(false, arraylist);
results.Add(true, listsuccess);
return results;
}如果文件过大,总不能全部放到内存处理。
我想逐行读取,然后操作。
想请问下有没有更好的思路
111117105000000001,111117105000000001=99122012570000,686501,0000001
111117105000000002,111117105000000002=99122013110000,118653,0000002
111117105000000003,111117105000000003=99122015150000,484460,0000003
111117105000000004,111117105000000004=99122011310000,437451,0000004
111117105000000005,111117105000000005=99122018500000,627604,0000005
111117105000000006,111117105000000006=99122012430000,029250,0000006
111117105000000007,111117105000000007=99122016070000,334081,0000007
111117105000000008,111117105000000008=99122013850000,564231,0000008
111117105000000009,111117105000000009=99122017340000,751953,0000009
111117105000000010,111117105000000010=99122017420000,108740,0000010
文件最小为6M多,10万行数据
我是这样操作的string[] temp = System.IO.File.ReadAllLines(SavePath, System.Text.Encoding.GetEncoding("gb2312"));
IDictionary<bool, ArrayList> dict = BusiNeobyCardImportBiz.ImportCard(temp);
public IDictionary<bool, ArrayList> ImportCard(string[] ListCard)
{
int Success = 0;//成功次数
int Failure = 0;//失败次数
IDictionary<bool, ArrayList> results = new Dictionary<bool, ArrayList>();
ArrayList arraylist = new ArrayList();
for (int i = 0; i < ListCard.Length; i++)
{
if (string.IsNullOrEmpty(ListCard[i]))
{
continue;
}
string[] cardNote = ListCard[i].Split(',');
if (cardNote.Length != 4||cardNote[0].Length!=18)
{
Failure++;
arraylist.Add(ListCard[i]);
continue;
}
if (this.Find(ExpEnter.Equal("CardNo", cardNote[0]), null).Count >= 1)
{
Success++;
continue;
}
BusiNeobyCardImport BusiNeobyCardImportModel = new BusiNeobyCardImport();
BusiNeobyCardImportModel.CardNo = cardNote[0];
BusiNeobyCardImportModel.Note1 = cardNote[0];
BusiNeobyCardImportModel.Note2 = cardNote[2];
BusiNeobyCardImportModel.Note3 = cardNote[3];
BusiNeobyCardImportModel.Status = "N";
OpResult result = BusiNeobyCardImportDal.Add(BusiNeobyCardImportModel);//添加到数据库
if (result.Success)
{
Success++;
}
else
{
Failure++;
arraylist.Add(ListCard[i]);
}
}
ArrayList listsuccess = new ArrayList();
listsuccess.Add(Success);
results.Add(false, arraylist);
results.Add(true, listsuccess);
return results;
}如果文件过大,总不能全部放到内存处理。
我想逐行读取,然后操作。
想请问下有没有更好的思路
解决方案 »
- C#调用C++的dll时,参数类型转换问题?
- 求C# winform下打印窗体,打印之前能看到打印的内容(预览)
- C#,求一个关于点沿直线运动的函数,谢谢了
- 发传真(高手请进)
- C# 如何将鼠标移到指定的位置 比如e.x == 125,e.y == 1
- 一名可以独当一面的网络编程人员到底应该掌握哪些知识?(高手拜进)
- 怎样在c#里面添加--Form_MouseDown 事件----解决立即给分
- Treeview1.SelectedNode.Remove() 怎么移不掉啊
- 外面开发的程序,要做扩展,有哪些方法和要注意什么问题
- 老是显示“未能加载类型“WebApp1.Global””这是什么原因?
- 问题描述:显示出所有回答错误题目的信息,(题目,用户答案,正确答案)
- LINQ删除一条数据时提示没有主键
我正打算用SqlBulkCopy试下要多少时间。
我试了下还是用SqlBulkCopy比较快=。=
先结贴吧