这里是我的类:LINQ的内部的LINQ造成序列返回任何结果
public class XDetail
{
public string Name { get; set; }
public int ID { get; set; }
}
public class X
{
public int XID { get; set; }
public int ID { get; set; }
}
的ID在它们之间共享,以X和XDetail链接(一对多关系)。我在使用下面的LINQ查询文件中读取并塑造一个匿名类型:
var results = from line in File.ReadAllLines(file)
select new
{
XID = int.Parse(line.Substring(0, 8).TrimStart('0')),
Name = line.Substring(8, 255).Trim()
};
这个数据是用来检查对现有X/XDetail做出适当的修改或添加新记录。 XList是一个列表,XDetailList是一个列表。
从那里我试图看中LINQ查询来匹配合适的项目:
var changedData = from x in XList
join xDetail in XDetailList on x.ID equals xDetail.ID
where
(!results.Any(p => p.XID.Equals(x.XID))
|| !results.Any(p => p.Name.Equals(xDetail.Name)))
select new
{
XValue = x,
XDetailValue = xDetail,
Result = (from result in results
where result.Name.Equals(xDetail.Name)
select result).Single() // This line is my bane
};
所以我可以得到我在寻找塑造成新的匿名类型,但是当我试图在增加的结果该结果= ...内部linq查询我的整个集转向:序列不包含任何元素。如果我删除它,我会得到我想要的结果集。 X/XDetail实际上是类型化的DataRows,我需要在使用匹配结果进一步处理时使用它,但没有那个结果,我需要做一个后来的linq查询来找到匹配。我希望能以一种冷静的方式来做到这一点。
我试过改变结果没有where子句,我可以得到一个结果,但我希望匹配的结果。有没有更好的方法来写这个或者让结果集再次运行的方法?
这里的结果是什么?它的类型是什么? –
结果是来自第一个查询的匿名类型,我正在解析该文件的XID和名称。 – ShelbyZ
我不明白你在说'从XDetail中的xDetail'和'XDetail'是不是一个类填充任何数据?你怎么做?(我只是问。) – Bastardo