-1

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

4

1 回答 1

2

您可以创建一个包含所有路径的数组,并用于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"),
                  });
于 2021-06-22T12:48:02.413 回答