linq где Содержит в IEnumerable

//\\ ---- selected items from ChechBoxList
IEnumerable selSender = (from ListItem item in CheckBoxList1.Items.OfType()
                                       where item.Selected
                                       select Convert.ToInt32(item.Value));

//\\ --- linq query
var messages = from m in myEntities.Messages
select new {
m.Id,
m.MessageText,
m.CreatedByUserID
};

моя проблема: мне нужно получить данные, отфильтрованные выбранными элементами из CheckBoxList «selSender» Я попробовал следующее:

 RadGrid1.DataSource = messages.Where(m => selSender.Contains(m.CreatedByUserID));

Но это не работает, сообщение об ошибке:

Аргумент экземпляра: невозможно преобразовать из 'System.Collections.Generic.IEnumerable' в 'System.Linq.IQueryable

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

0
nl ja de

1 ответы

Looks like property CreatedByUserID has type of Nullable. You need to use it's value for verifying if selSender contains it:

RadGrid1.DataSource = from m in myEntities.Messages                          
                      where m.CreatedByUserID.HasValue &&
                            selSender.Contains(m.CreatedByUserID.Value)
                      select new { 
                          m.Id,
                          m.MessageText,
                          m.CreatedByUserID 
                      };
0
добавлено
@ user1450667 Запрос Linq не выполняется до тех пор, пока вы не запросите результаты запроса (например, с помощью foreach или вызовите ToList). Таким образом, в вашем случае запрос не выполняется, прежде чем применять .Where . Он будет выполнен только внутри RadGrid.DataSource setter.
добавлено автор Sergey Berezovskiy, источник
Я думаю, что это отлично работает, но в моем случае мне нужно использовать selSender.Contains (m.CreatedByUserID) вне запроса linq, который я пробовал: RadGrid1.DataSource = из mes в сообщениях, где selSender.Contains (mes.CreatedByUserID) выбирает mes; get error: аргумент экземпляра: невозможно преобразовать из 'int []' в 'System.Linq.IQueryable
добавлено автор Abady, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot