Linq多个字段中的多个字段明显

时间:2016-03-03 15:02:17

标签: c# entity-framework linq

我遇到单个查询的问题,我试图获取对象列表(opList)并为每个对象提取2个UID,以便为另一个查询创建不同的列表。

DataContext.Where(x => opList.Select(y => y.UIDFirst)
                           .Union(opList.Select(o => o.UIDSecond)).ToList()
                           .Contains(x.uid)).ToList();

虽然每个选择单独工作,并且联合工作将列表连接到唯一列表(在imediates窗口中测试),但在处理整个语句时会抛出异常。

关于我做错了什么的任何想法;

  {"Unable to create a constant value of type 'DataContext.Class.Operation'. Only primitive types or enumeration types are supported in this context."}

2 个答案:

答案 0 :(得分:0)

这应该有效:

var uids = opList.Select(o => o.UIDFirst)
                 .Concat(opList.Select(o => o.UIDSecond)
                 .ToList();

var result = DataContext.Where(dc => uids.Contains(x.uid)).ToList();

答案 1 :(得分:0)

您必须在DataContext中包含的某个DbSet上调用您的语句,而不是直接在DataContext上调用。

DatContext.SomeDbSet.Where(x => /* ... */ );