【问题标题】:Extract DataTable values using Linq "C#"使用 Linq“C#”提取 DataTable 值
【发布时间】:2011-11-11 07:45:14
【问题描述】:

我有一个数据表 dtRecords,其值如下:

RollNo 姓名

120 约翰

121 约翰尼

122 山姆

我想将这些值添加到如下格式的列表框中。

RollNo:[RollNo] ,名称:[Name]

注意:[RollNo] 是 ColumnName 标识格式

预期输出:

卷号:120,姓名:约翰

卷号:121,姓名:乔尼

我可以使用 for 循环来实现这一点,但还有其他方法,例如使用 linq 或任何其他概念。

请在您的建议中附上示例。

我尝试使用下面的 linq 代码,但没有得到正确的输出。

string mystring="RollNo:[RollNo] , Name: [Name]";
List<DataColumn> cols = ClsGlobal.dtRecords.Columns.Cast<DataColumn>().ToList();
dtRecords.AsEnumerable().ToList().ForEach(r => cols.ForEach(c =>listBox1.Items.Add(mystring.Replace("[" + c.ColumnName + "]", r[c.ColumnName].ToString()))));

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    这样的?

    var query = (from c in dt.AsEnumerable()
                 select new { Value=c.Field<int>("RollNo"), 
                 Text=c.Field<string>("Name")}).ToList();
    

    然后只需将query 绑定到 ListBox。

    更新

    OP 只需要字符串;所以应该这样做:

    var query = (from c in dt.AsEnumerable()
             select "RollNo: "+ c.Field<int>("RollNo")+ " , Name: "+ c.Field<string>("Name")).ToList();
    

    【讨论】:

    • 谢谢伊卡洛斯。可以动态列名。我会期待 "RollNo:[RollNo] , Name: [Name],Mark1:[M1],......" 这种格式
    • 感谢您 Icarus 工作正常,是否可以动态 columnName ?可能意味着如何?
    猜你喜欢
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多