从一个列表中明确地使用多个字段
本文关键字:字段 一个 列表 | 更新日期: 2023-09-27 18:37:16
我在单个查询时遇到问题,我正在尝试获取对象列表(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."}
这应该有效:
var uids = opList.Select(o => o.UIDFirst)
.Concat(opList.Select(o => o.UIDSecond)
.ToList();
var result = DataContext.Where(dc => uids.Contains(x.uid)).ToList();
您必须在 DataContext 中包含的特定DbSet
上调用语句,而不是直接在 DataContext 上调用语句。
DatContext.SomeDbSet.Where(x => /* ... */ );