多个 table 相同字段 LINQ
Multiple table same fields LINQ
我必须从多个来源获取相同的值,所以我使用了 Concat
,但我有大量字段和更多来源。
IEnumerable<Parts> partsList = (from parts in xml.XPathSelectElements("//APS/P")
select new WindchillPart
{
Code = (string)parts.Element("Number"),
Part = (string)parts.Element("KYZ"),
Name = (string)parts.Element("Name"),
})
.Concat(from uparts in xml.XPathSelectElements("//APS/U")
select new WindchillPart
{
Code = (string)uparts.Element("Number"),
Part = (string)uparts.Element("KYZ"),
Name = (string)uparts.Element("Name"),
});
我几乎有 15 个领域和 5 个来源。那么有没有办法让这些字段变得通用,只需在某处添加源代码就可以工作并简化它呢?
您可以创建一个包含所有路径的数组,然后使用 SelectMany
获取元素。最后,您只调用了一次 Select
:
string[] pathes = new string[] { "//APS/P", "//APS/U" };
IEnumerable<Parts> partsList = pathes.SelectMany(path => xml.XPathSelectElements(path)).
Select(uparts => new WindchillPart
{
Code = (string)uparts.Element("Number"),
Part = (string)uparts.Element("KYZ"),
Name = (string)uparts.Element("Name"),
});
我必须从多个来源获取相同的值,所以我使用了 Concat
,但我有大量字段和更多来源。
IEnumerable<Parts> partsList = (from parts in xml.XPathSelectElements("//APS/P")
select new WindchillPart
{
Code = (string)parts.Element("Number"),
Part = (string)parts.Element("KYZ"),
Name = (string)parts.Element("Name"),
})
.Concat(from uparts in xml.XPathSelectElements("//APS/U")
select new WindchillPart
{
Code = (string)uparts.Element("Number"),
Part = (string)uparts.Element("KYZ"),
Name = (string)uparts.Element("Name"),
});
我几乎有 15 个领域和 5 个来源。那么有没有办法让这些字段变得通用,只需在某处添加源代码就可以工作并简化它呢?
您可以创建一个包含所有路径的数组,然后使用 SelectMany
获取元素。最后,您只调用了一次 Select
:
string[] pathes = new string[] { "//APS/P", "//APS/U" };
IEnumerable<Parts> partsList = pathes.SelectMany(path => xml.XPathSelectElements(path)).
Select(uparts => new WindchillPart
{
Code = (string)uparts.Element("Number"),
Part = (string)uparts.Element("KYZ"),
Name = (string)uparts.Element("Name"),
});