我遇到单个查询的问题,我试图获取对象列表(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."}
答案 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 => /* ... */ );