C# Linq-使用“不”;在;操作员从文本文件中选择不重复的行
我使用Linq从文本文件中选择和处理行。我的txtfile是由管道字符“|”分隔的两列。该文件包含以下内容:C# Linq-使用“不”;在;操作员从文本文件中选择不重复的行,c#,linq,text,file,C#,Linq,Text,File,我使用Linq从文本文件中选择和处理行。我的txtfile是由管道字符“|”分隔的两列。该文件包含以下内容: var nonDuplicates = from line in query1 group line by line.ID into grouped where grouped.Count() == 1 select grouped.First() 哈比| 11 GABBOT| 22 达布达| 33 拉坎特| 44 拉达| 55 达布达| 66 您会注意到第3行
var nonDuplicates = from line in query1
group line by line.ID into grouped
where grouped.Count() == 1
select grouped.First()
哈比| 11GABBOT| 22
达布达| 33
拉坎特| 44
拉达| 55
达布达| 66 您会注意到第3行和第6行有一个重复的ID(第1列)。我想使用linq最初读取发布的txt文件,找到副本(并报告副本),然后我想从ling查询中仅选择不重复的行。以下是我所拥有的:
StreamReader srReader = new StreamReader(fUpload.PostedFile.InputStream);
var query1 =
from line in srReader.Lines()
let items = line.Split('|')
select new UploadVars()
{
ID = items[0],
Number = items[1]
};
var GroupedQuery = from line in query1
group line by line.ID into grouped
where grouped.Count() > 1
select new {
ID = grouped.Key,
MCount = grouped.Count()
};
StringBuilder sb = new StringBuilder();
foreach (var item in GroupedQuery)
{
sb.AppendFormat("The following external ID's occur more than once and have not been processed:<br> {0}. Duplicated {1} times.", item.ID, item.MCount);
}
qrynodupedms的结果是文本文件中的完整列表。谁能解释一下我做错了什么。。。
提前感谢在
组
查询中,分组
变量也是一个包含组中TEM的IEnumerable
因此,您可以编写以下内容:
var nonDuplicates = from line in query1
group line by line.ID into grouped
where grouped.Count() == 1
select grouped.First()
谢谢你的及时帮助。我能重新获得期望的结果。您可能不知道为什么Not IN(!)运算符没有返回正确的结果?