Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在属性计数=某物的情况下,如何使用LINQ Lambda_Linq_Linq To Entities - Fatal编程技术网

在属性计数=某物的情况下,如何使用LINQ Lambda

在属性计数=某物的情况下,如何使用LINQ Lambda,linq,linq-to-entities,Linq,Linq To Entities,我有一个实体对象,Item,看起来像这样 public class Item() { IEnumerable<Category> Categories { get; set; } } 或 但两者都会抛出错误。。。 LINQ to实体中不支持指定的类型成员“类别”。只支持初始值设定项、实体成员和实体导航属性 这个错误告诉了我什么?我如何查询我要查找的内容?是否类别也是EF跟踪的实体?英孚似乎并不这么认为。你在用POCOs吗?通常,1对多的导航属性需要用ICollectionn

我有一个实体对象,Item,看起来像这样

public class Item()
{
    IEnumerable<Category> Categories { get; set; }
}

但两者都会抛出错误。。。 LINQ to实体中不支持指定的类型成员“类别”。只支持初始值设定项、实体成员和实体导航属性


这个错误告诉了我什么?我如何查询我要查找的内容?

是否
类别
也是EF跟踪的实体?英孚似乎并不这么认为。你在用POCOs吗?通常,1对多的导航属性需要用
ICollection
not IEnumerable表示

基本上,EF表示它不知道如何将
db.Items.Where(i=>i.Categories.Count()==0)
转换为SQL,因为它不确定与数据库相关的类别是什么

您也可能需要在EF通话中加入(“类别”),但我认为您有比这更基本的问题。

试试看

var unassigned = db.Items.Categories.Where(c=>c.Count() ==0);

你是对的。看起来该属性来自分部类,而实际上不在EDMX中。
var unassigned = db.Items.Where(i => i.Categories.Any());
var unassigned = db.Items.Categories.Where(c=>c.Count() ==0);