我有一个由EntityFramework的DataContext提供给我的System.Data.Entity.Dbset。 我的ViewModel中有一个ObservableCollection AllTaxes 我只想删除System.Data.Entity.Dbset中已从AllTaxes中删除的所有条目,这些条目基于一个名为" TaxCode"的公共属性。使用Linq。
我对Linq不太满意。我使用以下Linq来查找从ViewModel中删除但仍然存在于Model中的所有TaxCodes。
var List = Hexa_entity.hexa_tax.Where(Left => !AllTaxes.Any(Right => Right.TaxCode == Left.TaxCode));
但是,这给了我一个例外: -
无法创建
Hexa.Models.DM_Tax
类型的常量值。只要 在此上下文中支持原始类型或枚举类型。
简单地说,我如何将之间的SQL查询转换为linq?
List<ClassTest> Lst =
select * from List1<ClassTest>()
where id not in (select id from List2<ClassTest>())
.ToList<ClassTest>();
答案 0 :(得分:3)
要解决此问题,请尝试以下操作:
var AllTaxesCodes=AllTaxes.Select(e=>e.TaxCode);//Use a collection of primitive type
var List = Hexa_entity.hexa_tax.Where(Left => !AllTaxesCodes.Contains( Left.TaxCode));