为了账号安全,请及时绑定邮箱和手机立即绑定

如何将“linq”的结果返回到数据表?

如何将“linq”的结果返回到数据表?

C#
摇曳的蔷薇 2022-08-20 15:54:25
如何获得返回数据表的结果?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


查看完整回答
反对 回复 2022-08-20
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

类型不匹配。这就是编译器告诉你的。执行 .GroupBy clasue,它创建了一个组的集合,据我所知,您需要DataRows的平面集合。

你需要摆脱.GroupBy clause,或将组集合转换为平面列表。现在,您有一个组集合,每个“MerkTypeID”对应一个组,每个组都包含具有该 MerkTypeID 值的所有记录。


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号