Как сравнить столбец в списке 2 с linq - PullRequest
1 голос
/ 15 марта 2011

Как сравнивать и брать только товары из списка товаров, где p.street == a.street Список продуктов {p1, p2, p3} адрес списка {a1, a2, a3}

Пример:

  1. ListProduct = {P1, Париж} {P2, Лондон} {P3 Нью-Йорк} {P4 Багдад} {P5 Рим}
  2. Liste Adresse = {A1, Paris} {A2, Rome}

3.ListeProductResult = {P1, Париж} {P5 Рим}

Оба решения работают очень хорошо. Спасибо, я хочу добавить второй список для сравнения. 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 ]

1 голос
/ 15 марта 2011

Лучший способ сделать это - использовать join - это будет соответствовать свойствам двух разных сущностей

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

Если это дает вам несколько совпадений (например, если у вас было несколько совпадающих адресов для одного продукта), тогда вы могли бы дополнительно применить Distinct () к выводу этого запроса.

Дополнительные примеры Linq в действии приведены в превосходных 101 linq примерах на MSDN, включая раздел о соединениях - http://msdn.microsoft.com/en-us/vcsharp/ee908647#crossjoin

0 голосов
/ 15 марта 2011

Это можно сделать с помощью этих списков следующим образом: (при условии, что Street - это свойство, которое мы сравниваем)

var result = productsList
         .Where(product => addressList
                         .Any(address => address.Street == product.Street));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...