我觉得可以依赖数据库。
建表,表里保存文件名和文件内容,然后用sql来处理就行了。
建表,表里保存文件名和文件内容,然后用sql来处理就行了。
解决方案 »
- 新手:我的贪吃蛇吃东西后长度不加?谁帮帮我啊?谢谢了
- 如何做一个服务器
- 用C#写了一个屏保,如何能让屏保在“属性”的“显示器”中预览屏保效果?
- 如何将自定义控件添加入ListBox?
- 问一SQL语句
- 求教:哪个有 C# 写的脚本的例子。谢谢。
- 自动更新程序版本DLL问题讨论.如何做到多客户端(100以上)自动更新.利用IE功能下载CAB包.使其更新CAB包功能?
- 这是怎么回事呢?
- 高分求:《C#入门经典》《C#数据库入门经典》两书的中文电子版及随书源代码
- 如何控制datagrid一列中输入字符的长度。
- 新手请教C#正则表达式的一个问题
- dev 控件的GridControl中的gridview控件怎么找不到呢
2:使用Except()方法取数组的交集,判断为空或者Count不为0 即可。
string content = sr.ReadToEnd();
string[] str = content.Split(new string[] { "\r\n" }, StringSplitOptions.None);
至于不会用数组的问题,不会用,不会学吗
数组都不会用,还读什么文件
怎么去做比较检查呢? 数据我自己用了比较笨的方法实现了,代码没您的简便。 FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{ foldPath = dialog.SelectedPath;
DirectoryInfo TheFolder = new DirectoryInfo(foldPath);
fileName = Path.GetFileName(dialog.SelectedPath);//获取当前打开文件夹名称
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
string tempStr = File.ReadAllText(NextFile.FullName, Encoding.GetEncoding("GB2312"));//读取txt内容
this.listBox1.Items.Add(tempStr);
}
}
或者自己写循环比较也行
不要把数据直接扔控件里去,那样处理起来太不方便了
lblWait.Visible = true;
Application.DoEvents();
//Thread.Sleep(100);
var query = (from a in dt1.AsEnumerable()
where dt2.AsEnumerable().Where(b => a.Field<string>("报关单号") == b.Field<string>("报关单号")).Count() == 0
select a);//.Concat(dt2.AsEnumerable());//.GroupBy(l=> l.Field<string>("报关单号"));
rtxt.Text = "报关单号";
//query.ToList
rtxt.Text = "\r\n第一个Excel";
query.ToList().ForEach(c => rtxt.Text += "\r\n" + Convert.ToString(c.ItemArray[0]));
//DataTable dt3 = query.AsDataView().ToTable();
//foreach (DataRow item in dt3.Rows)
//{
// rtxt.Text += "\r\n" + item["报关单号"];
// Application.DoEvents();
//}
rtxt.Text = "\r\n第二个Excel";
var query1 = (from a in dt2.AsEnumerable()
where dt1.AsEnumerable().Where(b => a.Field<string>("报关单号") == b.Field<string>("报关单号")).Count() == 0
select a);
query1.ToList().ForEach(c => rtxt.Text += "\r\n" + Convert.ToString(c.ItemArray[1]));
//DataTable dt4 = query1.AsDataView().ToTable();
//foreach (DataRow item in dt4.Rows)
//{
// rtxt.Text += "\r\n" + item["报关单号"];
// Application.DoEvents();
//}
lblWait.Visible = false;
}读到数据库 转成 dt 之后对比
就是一个简单的小程序,如果用数据库去检索的话我自己也能写了那就把文件都读入到List<string,string>里,缓存起来,然后客户新增资料的时候,用客户资料去匹配这个list。
怎么去做比较检查呢? 数据我自己用了比较笨的方法实现了,代码没您的简便。 FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{ foldPath = dialog.SelectedPath;
DirectoryInfo TheFolder = new DirectoryInfo(foldPath);
fileName = Path.GetFileName(dialog.SelectedPath);//获取当前打开文件夹名称
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
string tempStr = File.ReadAllText(NextFile.FullName, Encoding.GetEncoding("GB2312"));//读取txt内容
this.listBox1.Items.Add(tempStr);
}
}
public static string[] GetString(string[] values)
{
List<string> list = new List<string>();
for (int i = 0; i < values.Length; i++)//遍历数组成员
{
if (list.IndexOf(values.ToLower()) == -1)
list.Add(values); }
return list.ToArray();
}
Enumerable.Except<TSource> 方法
里面的示例代码很简单哦。如果自定义数据类型,需要实现比较器(就是自定义比较函数)
double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 }; IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2); foreach (double number in onlyInFirstSet)
outputBlock.Text += number + "\n"; /*
This code produces the following output: 2
2.1
2.3
2.4
2.5
*/
怎么去做比较检查呢? 数据我自己用了比较笨的方法实现了,代码没您的简便。 FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{ foldPath = dialog.SelectedPath;
DirectoryInfo TheFolder = new DirectoryInfo(foldPath);
fileName = Path.GetFileName(dialog.SelectedPath);//获取当前打开文件夹名称
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
string tempStr = File.ReadAllText(NextFile.FullName, Encoding.GetEncoding("GB2312"));//读取txt内容
this.listBox1.Items.Add(tempStr);
}
}
public static string[] GetString(string[] values)
{
List<string> list = new List<string>();
for (int i = 0; i < values.Length; i++)//遍历数组成员
{
if (list.IndexOf(values.ToLower()) == -1)
list.Add(values); }
return list.ToArray();
}
版主,我可不可以厚颜无耻的恳求您写个完整的代码拿来学习一下呢? 搞了一下午没搞出来,无法面对室友了
1.建立个map 列表,map[filename] = 文件内容list
2.全读取文件内容放上面的map表里
3.双循环map和list ,遇到相同的就添加 文件名效率肯定高不了,但也比插入数据库快......
有心了,能看下代码么。但我还是需要有按钮来打开整个文件夹的把所有的要处理的文件放在软件所在目录的data文件夹内就行了