【发布时间】:2019-01-04 09:49:14
【问题描述】:
我有课:
class Entity
{
public string Name { get; set; }
public bool IsMain { get; set; }
}
我正在使用GroupBy从数据库获取数据:
var grouppedEntitiesByName = context.GetEntities<Entity>().GroupBy(en => en.Name);
我在数据库中有一些数据:
IsMain = true, Name = "entity"
IsMain = false, Name = "entity"
IsMain = true, Name = "Entity"
我正在使用这样的分组实体:
foreach (var entity in grouppedEntitiesByName)
{
var mainEntity = entity.Single(a => a.IsMain);
}
这里我收到Sequence contains more than one matching element 异常。分组实体有一个键entity和三个项目:
IsMain = true, Name = "entity"
IsMain = false, Name = "entity"
IsMain = true, Name = "Entity"
然后我尝试了这个:
var grouppedEntitiesByName = context.GetEntities<Entity>().ToList().GroupBy(en => en.Name);
这里分组的实体有两个键:
entity 和 Entity
为什么 group by 在IQueryable 中工作不正确以及如何解决这个问题?
(我用的是EF)
【问题讨论】:
-
你到底想要什么结果?
-
grouppedEntitiesByName 应该有两个键 'entity' 和 'Entity'。键是“实体”的第一项应该有两个实体,IsMain = true 和 IsMain = false(每个名称都是“实体”)。键为“Entity”的第二项应该有一个名为“Entity”且 IsMain = true 的实体
-
可能重复link
-
它与您使用的数据库有关吗?名称的唯一区别是大写E,所以当它按DB分组时忽略大小写,它仍然是一组。在列表示例中,它首先被拉入内存,然后 groupby 在代码中完成。也许出于测试目的将名称更改为 Entity2..
-
我正在使用 SQL Server。我尝试使用 SQL Server Management Studio 执行 group by query,似乎 SQL Server 不关心大小写
标签: c# entity-framework group-by iqueryable