我一直在尝试为两个不同数据库中的两个模型构建一个看起来很奇怪的连接方法,您可以查询第一个,然后返回一个小的 id 列表以在另一个数据库中搜索。一切正常,除了一两件事,我无法使用 lambda 函数执行 Id 列表子查询,我有链接通用的 Id 选择器函数,但在 where 子句中它现在可以工作,因为我不知道谁链接源类型对象传递给 Id 的函数,因此.Where(TSource => idlist.Contains(Idselector)
示例代码低于由于List.Conatins
代码而中断的位置。如果有人可以提供帮助,我将不胜感激
public static Foo JoinTwoModels<T1,T2>(
DbSet Dbs1,
DbSet Dbs2,
Expression<Func<T1, object>> Id1,
Expression<Func<T1, dynamic>> Selector1,
Expression<Func<T1, bool>> Search1,
Expression<Func<T2, object>> Id2,
Expression<Func<T2, dynamic>> Selector2)
{
var Output1 = Queryable.OfType<T1>(Dbs1);
var Output2 = Queryable.OfType<T2>(Dbs2);
List<dynamic> Result1 = Output1.Where(Search1).Select(Selector1).ToList();
List<object> idList = new List<object>();
PropertyInfo p1 = Result1[0].GetType().GetProperty("Id");
foreach (var o1 in Result1)
{
idList.Add(p1.GetValue(o1));
}
//Query result entries into db
List<T2> Result2 = Output2.Where(idlist.contains(Id2)).ToList();