Фильтрация данных с помощью Linq по десятичному списку в c # - PullRequest
0 голосов
/ 28 января 2019

У меня есть дата, и я хочу фильтровать по значению.Это работает:

 var result = datatable.AsEnumerable()
    .Where(r => r.Field<decimal?>("decimal_col") == 1);

Теперь я хочу отфильтровать список десятичных дробей.Я пытался поставить contains, но он не работает.Это список:

var list = new List<decimal>() { 8, 3, 2, 1 };

И это то, что я хочу, но оно не работает:

var result = datatable.AsEnumerable()
        .Where(r => r.Field<decimal?>("decimal_col").Contains(list));

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вы проверяете, содержит ли значение"список .Это наоборот.Список будет "содержать" значение :

list.Contains(r.Field<decimal?>("decimal_col"))
0 голосов
/ 28 января 2019

Вам необходимо использовать list.Contains ().Синтаксис List<T>.Contains(item) (обратите внимание на разницу. В запросе в OP он был правильно задан как item.Contains (список))

var result = datatable.AsEnumerable()
        .Where(r => list.Contains(r.Field<decimal?>("decimal_col")));

Подробнее о синтаксисе List.Contains можно прочитать здесь

...