如何比较2列表中的列与linq

时间:2011-03-15 15:51:51

标签: linq entity-framework

如何比较和获取列表产品中p.street == a.street的产品 列出产品{p1,p2,p3}列表地址{a1,a2,a3}

示例:

  1. ListProduct = {P1,Paris} {P2,London} {P3 New York} {P4 Bagdad} {P5 Rome}
  2. Liste Adresse = {A1,Paris} {A2,Rome}
  3. 3.ListeProductResult = {P1,Paris} {P5 Rome}

    两种解决方案都运行良好谢谢我想添加第二个列表进行比较 CategorieProduct = {C1,C2}

    它有效,但最佳解决方案是什么

     var result = from product in ListProduct 
             join address in ListAddresse on product.Street equals address.Street 
             join Categories in ListCategories on product.CategorieNom equals Categorie.CategorieNom  select product; 
    

2 个答案:

答案 0 :(得分:1)

这样做的最佳方法是使用join - 这将匹配两个不同实体的属性

var result = from product in ListProduct
             join address in ListAddresse on product.Street equals address.Street
             select product;

如果这给您多个匹配(例如,如果您有一个产品的多个匹配地址),那么您可以另外将Distinct()应用于此查询的输出。

有关Linq的更多示例,请参阅MSDN上的优秀101 linq examples - 包括有关联接的部分 - http://msdn.microsoft.com/en-us/vcsharp/ee908647#crossjoin

答案 1 :(得分:0)

可以使用以下列表完成:(假设Street是我们正在比较的属性)

var result = productsList
         .Where(product => addressList
                         .Any(address => address.Street == product.Street));