多个表相同的字段LINQ

Posted

技术标签:

【中文标题】多个表相同的字段LINQ【英文标题】:Multiple table same fields LINQ 【发布时间】:2021-09-06 01:24:47 【问题描述】:

我必须从多个来源获取相同的值,因此我使用了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 个来源。那么有没有办法让这些字段变得通用,只需将源代码添加到某个地方即可工作并简化它?

【问题讨论】:

【参考方案1】:

您可以创建一个包含所有路径的数组,并使用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"),
                  );

【讨论】:

以上是关于多个表相同的字段LINQ的主要内容,如果未能解决你的问题,请参考以下文章

使用具有不同表前缀的相同 linq

Microsoft Access - 合并具有相同字段的多个表

查询使用相同字段的多个表

怎么使用SQL语句批量删除多个表的相同字段

给数据库的多个表增加相同字段

MySql - 删除多个表中的相同字段