c# - 从 Linq 中的数据表中选择不同的行

标签 c# linq

我正在使用 linq 查询从数据表中选择 2 个不同的列 id 和 name。我有下面的代码,但它抛出错误特定的转换无效。

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> .添加 ToList()Distinct()之后:

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();

关于c# - 从 Linq 中的数据表中选择不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272363/

相关文章:

c# - 在 C# 中创建数据透视表

vb.net - 如何将此代码转换为 LINQ?

c# - 如何使用 LINQ 在 C# 中查找嵌套的 selenium WebElement?

c# - 使用 Linq 展平设备和仪表数据

c# - WebView 调用脚本 HRESULT 0x80020101

c# - "Simulate"单元测试中的命令行参数

c# - 使用 SqlBulkCopy 将 CSV 文件导入 SQL Server

c# - 将绑定(bind)属性传递给 ViewModel

c# - 数据库 'master' 中的 CREATE DATABASE 权限被拒绝。 SQL Server 2012

c# - 分组相同类型的集合 C#