2017-02-14 3 views
0

Я определил два списка и теперь хочу отфильтровать список escHistory по значению Application, соответствующему значениям RID filterRIDS.Как вы можете отфильтровать список по значению свойства в списке int?

Но, переходя через LINQ, который отфильтровывает escHistory, я получаю обратный отсчет нуля. Хотя в списке содержатся записи со значениями свойств приложения, соответствующими тем, которые определены в filterRIDS.

Вопрос:

Как вы можете отфильтровать список по стоимости недвижимости в другом списке?

Это основная суть кода фильтра:

List<int> filterRIDS = new List<int> { 115841, 200463 }; 
List<Escalation> escHistory = new List<Escalation>(); 

//Filter list by RID's matching 
escHistory = escHistory.Where(r => r.Application.Contains(filterRIDS.ToString())).ToList<Escalation>(); 

ответ

3

Вы обменивали запрос

escHistory = escHistory.Where(r => filterRIDS.Contains(int.Parse(r.Application))).ToList(); 
+1

Хорошо забыл упомянуть, что 'r.Application' является строковым типом типа' 123456 MyTestApp'. Поэтому в моем случае я получаю подстроку перед синтаксическим анализом int. 'escHistory = escHistory.Where (r => filterRIDS.Contains (int.Parse (r.Application.Substring (0, 6)))). ToList(); ' –

+2

@BrianJ или вы разделите' r.Application.Split ('') .First() ' –

1

Проблема filterRIDS.ToString() которая возвращает имя List<int> класса:

"System.Collections.Generic.List`1[System.Int32]" 

Из Конечно, у вас нет объектов истории, которые содержат это значение в Application поле. Если вы хотите, чтобы проверить, содержит ли строка Application любую строку из данного списка:

escHistory = escHistory 
    .Where(r => filterRIDS.Any(id => r.Application.Contains(id.ToString()))) 
    .ToList(); 
0

Я думаю, что this является то, что вы ищете. С небольшими изменениями, где вы конвертируете список int в строку.

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