2 回答
TA贡献1804条经验 获得超8个赞
DataTable如果您希望查询返回,则需要加载另一个DataTable
所以使用下面的查询,
DataTable dtResult = new DataTable();
dtResult.Columns.Add("Empolyee_CRC");
DataTable HasDuplicates = dt.AsEnumerable()
.GroupBy(g => g["Empolyee_CRC"])
.Where(c => c.Count() > 1)
.OrderBy(x => x.Key)
.Select(g => dtResult.LoadDataRow(new object[] { g.FirstOrDefault().Field<string>("Empolyee_CRC") }, false))
.CopyToDataTable();
或者
DataTable HasDuplicates = dt.AsEnumerable()
.GroupBy(g => g["Empolyee_CRC"])
.Where(c => c.Count() > 1)
.OrderBy(x => x.Key)
.Select(g => dtResult.LoadDataRow(new object[] { g.Key }, false))
.CopyToDataTable();
输出:
编辑:
如果您想避免创建新的数据表,那么您可以简单地将您选择的数据投影到列表中。
在if下面,您可以使用任何分开的条件,&&也可以按原样使用。取决于你的需要。
if (dt.Rows.Count > 0 && dt.AsEnumerable().Select(x => x["Empolyee_CRC"]).Count() > 0)
{
var result = dt.AsEnumerable()
.GroupBy(g => g["Empolyee_CRC"])
.Where(c => c.Count() > 1)
.OrderBy(x => x.Key)
.Select(g => new { Empolyee_CRC = g.FirstOrDefault().Field<string>("Empolyee_CRC") })
.ToList();
}
输出:
TA贡献1909条经验 获得超7个赞
您的 LINQ 中似乎有错误的 select 语句,请考虑以下示例:
DataTable HasDuplicates = dt.AsEnumerable()
.GroupBy(g => g["Empolyee_CRC"])
.Where(c => c.Count() > 1)
.Select(g => g
.OrderBy(r => r["Empolyee_CRC"])
.Select(r => r["Empolyee_CRC"])
.First())
.CopyToDataTable();
- 2 回答
- 0 关注
- 104 浏览
添加回答
举报