2010-08-24 2 views
2

Как я могу восстановить строки из таблицы только в том случае, если UserId находится в списке моих пользователей?LINQ to SQL filter по списку <int>

Код ниже не работает:/

List<int> selectedSourceUsers = ... 
MyModelDataContext context = ... 

e.Result = from u in context.Users 
        from id in selectedSourceUsers 
        where u.UserId == id 
        select u; 

Спасибо за помощь

+0

Когда вы говорите «не работает», вы должны сказать, что erro r или описать неожиданное поведение. –

+0

OK Я подумаю об этом в будущем – gruber

ответ

10

Попробуйте это:

int[] selectedUsersArray = selectedSourceUsers.ToArray(); 
e.Result = from u in context.Users 
      where selectedUsersArray.Contains(u.UserId) 
      select u; 

(Честно говоря, я бы ожидал, что работать с List<int> как ну, но использование массива вместо этого может исправить его ...)

+0

не работает: Нет перевода для языка SQL для метода «Boolean Contains (Int32)». Я перевел ошибку с польского языка, чтобы она могла звучать по-другому в оригинальной версии – gruber

+0

@snorlaks: попробуйте сначала преобразовать список в 'int []'. Я ожидаю, что это сработает ... Я отредактирую ответ, чтобы сделать это более ясным. –

+0

Сейчас он работает, но htere ошибка: Вы не можете присвоить нулевое значение элемента типа System.Int32, который типа не обнуляемого или STH как это :) – gruber

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