C# Linq表达式中的一个问题

C# Linq表达式中的一个问题,c#,linq,entity-framework,C#,Linq,Entity Framework,这个代码有什么问题? 我在最后一行得到了这个异常: 无法创建的常量值 类型 'System.Collections.Generic.IEnumerable'1'。 只有基元类型('如Int32, 中支持字符串和Guid') 这个背景 LastTaraFegharadadids是一个列表 我也测试 dgvListeGharardad.DataSource = query; 如果表达式等于false且此代码 query = from q in query join id in l

这个代码有什么问题? 我在最后一行得到了这个异常:

无法创建的常量值 类型 'System.Collections.Generic.IEnumerable'1'。 只有基元类型('如Int32, 中支持字符串和Guid') 这个背景

LastTaraFegharadadids是一个
列表

我也测试

dgvListeGharardad.DataSource = query;
如果
表达式等于false且此代码

query = from q in query 
        join id in lstTarafeGharardadIds on q.TarafeGharardadId equals id 
        select q;
不跑。但我不明白我在最后一行(在这段代码上)得到了错误:


哇,这很难读

无论如何,假设您的命名约定是正确的。最终的结果是:选择colV。选择列会导致选择IEnumerable,而不是数据源所需的基本值

您可以尝试使用SelectMany来选择所需的实际值

dgvListeGharardad.DataSource = query.SelectMany(x => x.[YourProperty]).ToList();

我认为linq不能连接内存中的集合(lsttarafegharadadids)和数据库表(dal.TBL_-gharadad,dal.v_-gharadad…)

类似问题:

这应该起作用:

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();

格式化你的代码,使其可读-那么人们可能更愿意阅读:)请格式化你的代码,使其更可读。如有可能,还应删除不必要的项目。
lsttarafegharadadids
中的项目类型是什么?
dgvListeGharardad.DataSource = query.SelectMany(x => x.[YourProperty]).ToList();
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();