我有两个数据持有者列表。
IQueryable<myClass> aData and IQueryable<myClass> bData
两者都包含一个 LocationId 我想删除 bData 中不是来自 aData 中位置的所有实例。因此,如果位置 99 出现在 B 而不是 A,则将其删除。
所以我为此做的是
var validLocationIds = aData.Select(d => d.LocationId).Distinct();
var newBData = bData.Where(d=> validLocationIds.Contains(d.LocationId));
然后我将 a 和 newB 合并,将它们分组并获得我想要的值。这在某些时候可以正常工作,但对于某些参数(用于构建 A 和 B)
我收到错误消息:
“方法 'Int32 Parse(System.String)' 不支持对 SQL 的转换。”
一旦我在to getToList()
之后运行 a ,错误消息就会消失,但我希望该方法只能访问数据库一次。Distinct()
ValidLocationId
我在这里遗漏了有关 Contains 方法的内容吗?( AData
andBData
是同一个类,并且LocationId
是一个 int)