如何获得返回数据表的结果?linq我正在尝试以下线程的解决方案:选择具有重复值的数据表的所有记录但它无法为我编译。这是我的代码IEnumerable<DataRow> dtrow = default(IEnumerable<DataRow>);dtrow = dtTable.AsEnumerable().GroupBy(x => x["MerkTypeID"]).Where(x => x.Count() > 1);using (DataTable table = dtrow.CopyToDataTable()){}但VS给出了这个错误错误 CS0266 无法将类型隐式转换为 。存在显式转换(您是否缺少强制转换?System.Collections.Generic.IEnumerable<System.Linq.IGrouping<object, System.Data.DataRow>>System.Collections.Generic.IEnumerable<System.Data.DataRow>我也试过这样var dtrow = dtTable.AsEnumerable().GroupBy(x => x["MerkTypeID"]).Where(x => x.Count() > 1);using (DataTable table = dtrow.CopyToDataTable()){}但现在我得到这个错误错误 CS0311 该类型不能用作泛型类型或方法中的类型参数“T”。没有从 到 的隐式引用转换。System.Linq.IGrouping<object, System.Data.DataRow>DataTableExtensions.CopyToDataTable<T>(IEnumerable<T>)System.Linq.IGrouping<object, System.Data.DataRow>System.Data.DataRow那么如何做到这一点呢?为什么它似乎在我找到此代码的链接中起作用?编辑我尝试了亨利的这个建议:IEnumerable<DataRow> dtrow = default(IEnumerable<DataRow>);dtrow = (IEnumerable<DataRow>)gttDataTableOpdrachtCar.Table.AsEnumerable().GroupBy(x => x["MerkTypeID"]).Where(x => x.Count() > 1);using (DataTable table = dtrow.CopyToDataTable())这编译,但在运行时我得到这个错误:其他信息:无法将类型为“WhereEnumerableIterator2[System.Object,System.Data.DataRow]]”的对象强制转换为类型“System.Collections.Generic.IEnumerable'1[System.Data.DataRow]”。1[System.Linq.IGrouping
2 回答

至尊宝的传说
TA贡献1789条经验 获得超10个赞
您可以使用以下代码:
var result = dtTable.AsEnumerable().GroupBy(x => x["MerkTypeID"]) .Where(x => x.Count() > 1) .SelectMany(x => x.ToList()) .CopyToDataTable();
如果按 对行进行分组,则返回具有多个成员的组的所有行。MerkTypeID

MMMHUHU
TA贡献1834条经验 获得超8个赞
类型不匹配。这就是编译器告诉你的。执行 .GroupBy clasue,它创建了一个组的集合,据我所知,您需要DataRows的平面集合。
你需要摆脱.GroupBy clause,或将组集合转换为平面列表。现在,您有一个组集合,每个“MerkTypeID”对应一个组,每个组都包含具有该 MerkTypeID 值的所有记录。
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消