纯数据源到嵌套列表c#

时间:2016-07-27 08:01:18

标签: c# nested sqldatareader simplify

这一切都始于存储过程数据结果(普通结构)

  

IdGrandad,GrandadName,IdDad,DadName,IdChild,ChildName

响应应该是嵌套实体列表。


我将数据输入 SqlDataReader ...然后,这里是循环:

var grandadList = new List<Grandad>();

while (reader.Read())
{
    // Properties setters.
    Grandad grandadItem = BindGrandad(reader);
    Dad dadItem = BindDad(reader);
    Child childItem = BindChild(reader);

    // Entities finders.
    Func<Grandad, bool> foundGrandad = (item => item.Identity.Equals(grandadItem.Identity));
    Func<Dad, bool> foundDad = (item => item.Identity.Equals(dadItem.Identity));

    if (!grandadList.Any(foundGrandad))
        grandadList.Add(grandadItem);

    // Here comes the horror-code...
    if (!grandadList.Where(foundGrandad).SelectMany(item => item.DadList).ToList().Any(foundDad))
        grandadList.SingleOrDefault(foundGrandad)?
            .DadList.Add(dadItem);

    grandadList.SingleOrDefault(foundGrandad)?
        .DadList.SingleOrDefault(foundDad)?
        .ChildList.Add(childItem);
}



我怎么能简化循环代码?

提前致谢!

1 个答案:

答案 0 :(得分:0)

哦,小伙子,根本没有答案!。

好吧,我刚刚找到了一个“更好”的解决方案......

  

首先应创建一个普通对象,然后让 .GroupBy()执行   欺骗!

稍后再读。