【发布时间】:2017-02-22 10:32:20
【问题描述】:
在以下链接Combine tables using row values as column LINQ C# SQL 的基础上,我将使用行值作为列来组合两个 IEnumerable。与所写的不同,我没有使用通过 Web 服务获得的具有常量字段的表。
var element = XDocument.Parse(getstring1);
var dataCode = from item in element.Descendants("Field")
where item.Element("Code").Value == "CODE"
select item.Element("Value");
var dataDescription = from item in element.Descendants("Field")
where item.Element("Code").Value == "DESCRIPTION"
select item.Element("Value");
var resultsSet = dataCode.Zip(dataDescription, Tuple.Create);
element = XDocument.Parse(getstring2);
var dataSizeSet = from item in element.Descendants("Field")
where item.Element("Code").Value == "SIZESET"
select item.Element("Value");
var dataSizeId = from item in element.Descendants("Field")
where item.Element("Code").Value == "SIZEID"
select item.Element("Value");
var dataSizeLabel = from item in element.Descendants("Field")
where item.Element("Code").Value == "SIZELABEL"
select item.Element("Value");
var resultsLabel = dataSizeSet.ZipThree(dataSizeId, dataSizeLabel, Tuple.Create);
var results = resultsSet.GroupJoin(resultsLabel,
set => set.Item1,
label => label.Item1,
(set, label) => new
{
set.Item1,
set.Item2,
Label01 = label.SingleOrDefault(x => x.Item2.Value == "1").Item3,
Label02 = label.SingleOrDefault(x => x.Item2.Value == "2").Item3,
Label03 = label.SingleOrDefault(x => x.Item2.Value == "3").Item3,
Label04 = label.SingleOrDefault(x => x.Item2.Value == "4").Item3,
Label05 = label.SingleOrDefault(x => x.Item2.Value == "5").Item3,
Label06 = label.SingleOrDefault(x => x.Item2.Value == "6").Item3,
Label07 = label.SingleOrDefault(x => x.Item2.Value == "7").Item3,
Label08 = label.SingleOrDefault(x => x.Item2.Value == "8").Item3,
Label09 = label.SingleOrDefault(x => x.Item2.Value == "9").Item3,
Label10 = label.SingleOrDefault(x => x.Item2.Value == "10").Item3,
Label11 = label.SingleOrDefault(x => x.Item2.Value == "11").Item3,
Label12 = label.SingleOrDefault(x => x.Item2.Value == "12").Item3,
Label13 = label.SingleOrDefault(x => x.Item2.Value == "13").Item3,
Label14 = label.SingleOrDefault(x => x.Item2.Value == "14").Item3,
Label15 = label.SingleOrDefault(x => x.Item2.Value == "15").Item3,
Label16 = label.SingleOrDefault(x => x.Item2.Value == "16").Item3,
Label17 = label.SingleOrDefault(x => x.Item2.Value == "17").Item3,
Label18 = label.SingleOrDefault(x => x.Item2.Value == "18").Item3,
Label19 = label.SingleOrDefault(x => x.Item2.Value == "19").Item3,
Label20 = label.SingleOrDefault(x => x.Item2.Value == "20").Item3
});
如果我展开 IEnumerable,var“结果”不包含任何内容,并得到以下错误消息:“对象引用未设置为对象的实例”。
有什么建议吗?
【问题讨论】:
-
我相信您的问题会在重复后立即关闭。但对于未来 - 不要只是转储所有代码。添加一些描述 what 您的代码并提供一些 xml 来重现您的问题
-
在我看来这不是重复,而是整合
-
我不知道你把什么叫做 integration 但它是 stackoverflow.com/questions/4660142/… 的副本