如何从基于属性的对象列表中获取公共对象?

时间:2018-07-28 22:04:24

标签: c# linq collections

如何基于相似的属性合并两个列表。假设我有列表A和列表B。列表A具有Name属性,列表B具有Name属性。如果列表A的名称与列表B的Name属性匹配。则将该对象保存在新列表中。如何针对用户将要提供的许多列表执行此操作。因此,如果用户提供了五个列表。我想获得属性名称匹配的所有对象的对象。我可以使用groupby对两个列表进行处理,但是如何对几个列表进行处理呢?

 class Customer
{
     public int ID {get; set;}
     public string description {get; set;}
}



   List<Customer> AllCustomer; 
   var lst = new List<Hotel>();

         foreach (var item in AllCustomer)
            {


                var lst = CustomrBO.FetchSales(item);
            }

如果酒店的HotelRegistration属性与每个客户匹配,如何获取酒店的对象列表?

               var resultSet = source.GroupBy(x => x.Name)
                   .Where(g => g.Count() > 1)
                  .SelectMany(x => x);

3 个答案:

答案 0 :(得分:0)

好吧,为什么不使用List<T>.AddRange()方法加入用户提供的所有5个列表,并使用当前遵循的相同过程

答案 1 :(得分:0)

X

答案 2 :(得分:0)

我用一行代码解决了它:

class Program
{
    static void Main(string[] args)
    {
        var specialList = new List<C>();
        specialList.AddRange(listA.Where(x => ListB.Where(c => c.Name == x.Name).Any()).Select(x => new C()
        {
            Name = x.Name
        }));
    }
}

public class A
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
}

public class B
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string CompanyName { get; set; }
}

public class C
{
    public string Name { get; set; }
}

如果使用此代码,您将有多种方法来创建特殊对象。 如果您对此功能有很多疑问,请评论我。