У меня есть 2 модели, такие как ниже,
public class AClass
{
public int prop { get; set; }
public virtual List<BClass> bClass { get; set; }
}
public class BClass
{
public int prop1 { get; set; }
public int prop2 { get; set; }
}
Использовали эти модели в запросе linq
var data = testList.GroupBy(e => e.TestProp1).Select(g=> new AClass
{
prop = g.Key,
bClass = g.GroupBy(p=> p.TestProp2).Select(g1 => new BClass {
prop1 = g1.FirstOrDefault().TestProp1,
prop2 = g1.FirstOrDefault().TestProp2
}).ToList()
}).ToList();
Теперь существует требование добавить новое свойство prop3
в BClass
без влияния на оригинал BClass
. Итак, я создал унаследованный CClass
и использовал его в linq,
public class CClass : BClass
{
public int prop3 { get; set; }
}
var data1 = testList.GroupBy(e => e.TestProp1).Select(g=> new AClass
{
prop = g.Key,
bClass = g.GroupBy(p=> p.TestProp2).Select(g1 => new CClass {
prop1 = g1.FirstOrDefault().TestProp1,
prop2 = g1.FirstOrDefault().TestProp2
}).ToList()
}).ToList();
В этом сценарии bClass = g.GroupBy(p => p.TestProp2, (key1, g1) => new CClass
строка, выдающая ошибку, Cannot implicitly convert type 'System.Collections.Generic.List<TestApp.CClass>' to 'System.Collections.Generic.List<TestApp.BClass>'
* Решение, которое я пробовал: *
Я заменил следующую строку с AClass
public virtual List<BClass> bClass { get; set; }`
на
public virtual dynamic bClass { get; set; }
это сработало.
Но, простодля любопытства, не объявляя это как динамическое свойство, как я могу достигнуть этого?