将数据表转换为Linq Query C时出错

时间:2018-03-03 07:09:43

标签: c# .net linq

这是我的数据表(附图)。我试图通过使用Linq获得不同的形式,结果featureid值即将获得System.Linq.Enumerable.WhereSelectEnumerableIterator但在数据表中每个Featureid行都有一个值

    var result1 = dtTaskandBugs.AsEnumerable().GroupBy(x => x["Storyid"])
                                .Select(item => new
                                {
                                    Storyid = item.Key,
                                    Assignedto = string.Join(",", item.Select(a => a["Assignedto"]).Distinct()),
                                    Featureid = item.Select(s => s["Featureid"]),
                                    Completed = item.Sum(y => Convert.ToInt64(y["Completed"])),
                                    effort = item.Sum(z => Convert.ToInt64(z["effort"]))
                                });

错误 Featureid值为
{System.Linq.Enumerable.WhereSelectEnumerableIterator<System.Data.DataRow, object>}

  

结果之前的数据表

datatable before result

1 个答案:

答案 0 :(得分:0)

我认为问题是由于您在选择查询结果中留下了一个惰性评估列。虽然string.JoinIEnumerable.Sum会立即生成值,但会为FeatureId分配值IEnumerable(因为Select返回的是什么)。我相信拨打ToList()可以解决问题。 如果可能的话,我还建议使用数据模型。