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查询无法在集合中创建常量值集合_Linq_Entity Framework - Fatal编程技术网

linq查询无法在集合中创建常量值集合

linq查询无法在集合中创建常量值集合,linq,entity-framework,Linq,Entity Framework,我正在尝试获取标记为publid(DisplayFor=false)或具有所需权限(DisplayFor=true;article.groups包含已授予的组;)和(GroupId=Guid.Empty,适用于每个注册用户)的文章: 我需要一个适当的linq查询,这样我就不需要选择1000条记录才能从中获得10条记录了。试试这个。这将从LINQ查询中删除组列表,但是如果您的groupId是Guid,并且用户可以有多个组,那么您将向查询发送一个非常大的Guid列表 List<Group>

我正在尝试获取标记为publid(DisplayFor=false)或具有所需权限(DisplayFor=true;article.groups包含已授予的组;)和(GroupId=Guid.Empty,适用于每个注册用户)的文章:


我需要一个适当的linq查询,这样我就不需要选择1000条记录才能从中获得10条记录了。

试试这个。这将从LINQ查询中删除组列表,但是如果您的groupId是Guid,并且用户可以有多个组,那么您将向查询发送一个非常大的Guid列表

List<Group> groups = new UserBiz().Groups(AchaAuth.CurrentUserId);
var groupsIds = groups.Select(i => i.GroupId).ToList();
var result = from HeadsupArticle article in ctx.HeadsupArticles
                             where article.GroupId == item.GroupId &&
                                   article.Active &&
                                   (!article.DisplayFor || (article.DisplayFor && article.Groups.Any(g =>
                                    g.GroupId == Guid.Empty ||
                                    groupsIds.Contains(g.GroupId)
                                   )))
                             select article;

这与你的LINQ查询无关…那么你能告诉我该怎么做吗?双击错误。谢谢你救了我一天;我试图标记为答案,但它说它必须等待!!!!!!!!你能告诉我为什么这一行应该出现在外部吗?当你处理LINQ to实体时,你不能向查询发送非原语值。通过提取组,ef将把groupID转换成一个WHERE g.GroupdId IN('guid1','guid2',…,'guidN')
Unable to create a constant value of type 'Achasoft.AchaCms.Models.Group'. Only primitive types or enumeration types are supported in this context.
List<Group> groups = new UserBiz().Groups(AchaAuth.CurrentUserId);
var groupsIds = groups.Select(i => i.GroupId).ToList();
var result = from HeadsupArticle article in ctx.HeadsupArticles
                             where article.GroupId == item.GroupId &&
                                   article.Active &&
                                   (!article.DisplayFor || (article.DisplayFor && article.Groups.Any(g =>
                                    g.GroupId == Guid.Empty ||
                                    groupsIds.Contains(g.GroupId)
                                   )))
                             select article;
 WHERE g.GroupId IN ('guid1', 'guid2', ... 'guidN')