【发布时间】:2018-11-18 16:10:45
【问题描述】:
我想编写动态 LINQ 函数以返回两个列表之间的差异,但以抽象的方式使该函数获取任何两个相同类型的列表并返回第一个列表中的项目但不在第二个列表中
我写了一些类似下面的东西,它工作正常,但正如我上面提到的,我需要抽象的方式
List<Employee> a = List of Items;
List<Employee> b = List of Items;
var finalCountries = a.Where(u => !b.Any(u2 => u2.ISOA2 == u.ISOA2)).ToList();
我阅读了有关动态 LINQ 表达式的信息,但它很复杂,我没有运气找到我想要的东西
如果有什么办法可以把上面的where语句写成字符串并执行?
【问题讨论】:
-
您只需要继承或使用接口并确保类型具有
ISOA2,因为您的代码需要它。然后您可以使您的方法通用并在您的方法上使用where约束,这样只有那些具有该属性的类型才能发送到您的方法。 -
ISOA2 是 EntityFramework 的关键,我可以为任何实体类型获取它...这就是我在这里问的原因...我可以将以上内容写成字符串并执行吗?
标签: c# .net entity-framework linq lambda