从一个列表中明确地使用多个字段

本文关键字:字段 一个 列表 | 更新日期: 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 => /* ... */ );