Я столкнулся с проблемой LINQ2 Sql, когда Visual Studio предлагает возможное исправление, но это не работает. Представьте себе следующее:
Мне нужно вернуть объект типа IEnumerable QmmProductionOrderInteruptCardCollection содержит список, который снова содержит список, каждая заметка имеет свойство «Проверено» типа boolean.
Теперь я хочу посмотреть для этого свойства в каждой заметке, где Reviewed имеет значение false, но возвращает верхний объект IEnumerable
Теперь это мой оператор LINQ, который вместо этого вернет IEnumerable без преобразования:
return await ApplicationDbContext.Qmm_ProductionOrderInteruptCardCollections
.Select(x => x.ProductionOrder)
.SelectMany(x => x.Notes)
.Where(n => !n.IsReviewed)
.ToListAsync();
Visual studio предлагает приведение к типу IEnumerable следующим образом:
return (IEnumerable<QmmProductionOrderInteruptCardCollection>)await ApplicationDbContext.Qmm_ProductionOrderInteruptCardCollections
.Select(x => x.ProductionOrder)
.SelectMany(x => x.Notes)
.Where(n => !n.IsReviewed)
.ToListAsync();
Но при тестировании я получаю InvalidCastException
Невозможно привести объект типа 'System.Collections.Generi c .List 1[BIP_Models.Domain.Qmm.QmmNote]' to type 'System.Collections.Generic.IEnumerable
1 [BIP_Models.Domain.Qmm.QmmProductionOrderInteruptCardCollection] '.
Есть ли у вас какие-либо мысли, как решить эту проблему?
Для лучшего понимания это будет sql выписка, которую я хотел бы передать:
SELECT
*
FROM QmmProductionOrderInteruptCardCollections pic
JOIN QmmProductionOrders p ON p.Id = pic.ProductionOrderId
JOIN QmmNotes n ON n.ProductionOrderId = p.Id
WHERE
n.IsReviewed = 0;
С уважением и наилучшими пожеланиями. Патрик