Присоединение HashSet к запросу LINQ to SQL

У меня есть HashSet, содержащий список идентификаторов int int для элементов, которые необходимо выбрать.

HashSet<int> SelectedItems = new HashSet<int>()

Полный список элементов загружается оператором LINQ to SQL. Я буду заполнять ObservableCollection из следующего:

public class DataItem
{
    public int Id { get; private set; }
    public name String { get; private set; }
    public bool IsSelected { get; set; }
}

Свойству IsSelected должно быть присвоено значение true, если идентификатор находится в HashSet, в противном случае ему должно быть присвоено значение false;

Вот мой запрос LINQ:

var items =
    from c in itemsContext.DataItems
    where (c.Latest == true)
    select c;

Как я могу присоединиться к HashSet в приведенном выше запросе, чтобы получить желаемый результат?

Спасибо

PS: извините, но я не знаю, почему блоки кода были отформатированы неправильно.


person Robert Lancaster    schedule 29.05.2012    source источник


Ответы (2)


если я правильно понимаю ваш вопрос, то есть элементы данных, соответствующие выбранным элементам в памяти... Тогда используйте, содержит...

from dataItem in context.DataItems
where dataItem.Latest && SelectedItems.Contains(dataItem.Id)
select dataItem;
person kalki    schedule 29.05.2012
comment
Почти то, что мне было нужно, смотрите ниже, что у меня получилось. - person Robert Lancaster; 29.05.2012

Вот что я придумал в качестве решения:

from dataItem in context.DataItems
where dataItem.Latest
select new {dataItem.Id,dataItem.Name,IsSelected=SelectedItems.Contains(dataItem.Id)};

Спасибо, что указали мне правильное направление.

person Robert Lancaster    schedule 29.05.2012
comment
это будет перечислять весь набор данных элементов данных из БД, я так понимаю, что для фильтрации элементов данных в БД .. ура - person kalki; 29.05.2012
comment
Набор данных будет отфильтрован на основе установленного поля «Последний». Членство в HashSet является требованием результирующего набора, а не фильтра. Извиняюсь, если я был недостаточно ясен. - person Robert Lancaster; 29.05.2012