2014-07-07 5 views
0

У меня есть список ints. Мне нужно выбрать элементы из источника данных, где конкретное поле/столбец соответствует каждому int в списке.Linq AND для каждого элемента в списке

Источника данных Пример

ItemID ListID 
1  1 
1  2 
2  1 

Я хочу, чтобы найти все элементы, которые соответствуют всему ListIDs из списка, содержащего список идентификаторов 1 и 2.

В настоящее время я использую ...

List<Item> items = (from element in MyItems where listIDs.Contains(element.ListID) select element).ToList(); 

Однако это вызывает запрос OR, а не запрос AND для нескольких строк для каждого отдельного ItemID.

+0

Пересечение? Вы хотите элемент, который является общим для myitems и listids? – Rangesh

+0

вы хотите совместить только itemId или оба ItemId и listId с соответствующими столбцами в MyItems –

ответ

0

Если вы пытаетесь сравнить два списка для равенства, вы можете использовать метод SequenceEqual.

Что-то вдоль линий

list<item> results = (from element in MyItems where listIDs.SequenceEqauls(element.ListID) select element).ToList(); 

Я не совсем уверен, если я понял ваш вопрос правильно. Когда вы говорите «конкретное поле/столбец», является ли это полем/столбцом какой-то коллекции?

0

если у меня есть ваш вопрос !! попробуйте этот

var MyItems=<your data column values> 
var ItemsMatch=MyItems.Where(z=>MyIntsList.Contains(int.Pars(z.ToString()))).ToArray(); 
0

я не уверен, я понимаю вопрос. Я думаю, что у вас есть список, и вы пытаетесь сопоставить строки, которые имеют как ListID & ItemID, равный ЛЮБОЙ элемент в списке. Если то, что вы это Лыжа это способ сделать это:

List<Item> items = from element in MyItems 
where listIDs.Contains(element.ListID) and listIDs.Contains(element.ItemID) 

Или, возможно, вы пытаетесь соответствовать строкам, которые имеют как ListID & Itemid равен ЖЕ элемента в списке. Если то, что вы Лыжи это это способ сделать это:

List<Item> items = from element in MyItems 
where listIDs.Contains(element.ListID) and element.ListID == element.ItemID 
0

Если я вас правильно понял, это будет делать:

var result = (from item in MyItems 
       from i in listIDs 
       where i == item.ListId 
       select item).ToList(); 

Он будет получать все объекты Элемента в списке MyItems, которые имеют ListId присутствует в ListId.

Смежные вопросы