Проблема в выражении Linq - PullRequest
0 голосов
/ 18 мая 2011

Что не так с этим кодом?Я получил это исключение в последней строке :

Невозможно создать постоянное значение типа 'System.Collections.Generic.IEnumerable`1'.В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid.)1013 *

dgvListeGharardad.DataSource = query;

Все работает хорошо, если выражение if равно false и этот код

query = from q in query 
        join id in lstTarafeGharardadIds on q.TarafeGharardadId equals id 
        select q;

не работает.Но я не могу понять, что я получил ошибку в последней строке (в этом коде):

dgvListeGharardad.DataSource = query.ToList();

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Я думаю, что linq не может объединиться между коллекцией в памяти (lstTarafeGharardadIds) и таблицей базы данных (dal.TBL_Gharardad, dal.v_Gharardad ...).

Аналогичная проблема: Почему победилне работает ли этот оператор соединения LINQ?

Это должно работать:

var query = (from colT in dal.TBL_Gharardad select colT).AsEnumerable();;
if (lstTarafeGharardadIds.Count>0)
    query = from q in query 
            join id in lstTarafeGharardadIds on q.TarafeGharardadId equals id 
            select q;
dgvListeGharardad.DataSource = query.ToList();
0 голосов
/ 18 мая 2011

Ого, это трудно читать!

В любом случае, если ваше соглашение об именах верно. вы в конечном итоге: выберите ColV. Выбор столбца приводит к выбору IEnumerable, а не примитивного значения, которое требует ваш источник данных.

Вы можете попробовать использовать SelectMany, чтобы выбрать нужное значение

dgvListeGharardad.DataSource = query.SelectMany(x => x.[YourProperty]).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...