Multiple table same fields LINQ

68 Views Asked by At

I have to take the same values from multiple source and so I used Concat but I have large number of fields and couple of more sources too.

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"),
                                 });

I almost have 15 fields and 5 sources. So is there anyway to make the fields as common and just add the sources somewhere to work and simplify this?

1

There are 1 best solutions below

0
On BEST ANSWER

You could create an array of all your pathes, and use SelectMany to get the elements. In the end, you call Select just once:

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"),
                  });