在Linq中从数据表中选择不同的行
本文关键字:数据表 Linq 选择 | 更新日期: 2023-09-27 18:05:04
我使用linq查询从数据表中选择2个不同的列id和name。我有下面的代码,但它抛出错误特定的cast是无效的。
sdatatable = ds.Tables[0].AsEnumerable().Where(x => x.Field<string>
("TableName") == "header").CopyToDataTable();
rptcourse.DataSource = sdatatable.AsEnumerable().Select(row => new
{
locationid = row.Field<string>("locationID"),
locationname = row.Field<string>("locationname")
}).Distinct();
此代码返回IEnumerble<T>
,而DataSource
可能期待List<T>
。在Distinct()
后面添加ToList()
:
rptcourse.DataSource = sdatatable.AsEnumerable().Select(row => new
{
locationid = Convert.ToInt32(row["locationid"]),
locationname = row.Field<string>("locationname")
}).Distinct().ToList();
你也可以这样连接两个查询:
rptcourse.DataSource = ds.Tables[0].Where(x => x.Field<string>("TableName") == "header")
.Select(row => new
{
locationid = Convert.ToInt32(row["locationid"])
locationname = row.Field<string>("locationname")
})
.Distinct().ToList();