Работаю с Entity Framework. Есть класс
class Entity
{
public string Name { get; set; }
public bool IsMain { get; set; }
}
Получаю данные из БД c использованием 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. Дело в том что GroupBy дает три элемента, кажется он не различает маленькие и большие буква. После я использовал ToList:
var grouppedEntitiesByName = context.GetEntities<Entity>().ToList().GroupBy(en => en.Name);
Всё работает. Но почему это не работает с IQueryable. Есть ли какое то решение данной проблемы?
Попробуйте использовать FirstOrDefault вместо Single, так:
var mainEntity = entity.FirstOrDefault(a => a.IsMain);
if(mainEntity != null)
{ ... }
Single: выбирает единственный элемент коллекции, если коллекция содердит больше или меньше одного элемента, то генерируется исключение
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости