如何从Datatable中提取过滤数据并创建字符串

时间:2010-11-11 07:21:58

标签: c# linq lambda

我的数据集 ds 包含两个字段, AllowInput int TypeName 字符串
我想将所有TypeName作为逗号分隔的字符串,其中AllowInput == 1

这是我到目前为止所做的。

string keys = string.Join(",", ds.Tables[0].Rows.Cast<DataRow>().
                Where(x => x["AllowInput"].ToString() == "1").
                ToArray().
                Cast<DataRow>().
                Select(x => x["TypeName"].ToString()).
                ToArray());

这很有效。 但是代码需要这么冗长吗?

2 个答案:

答案 0 :(得分:2)

您可以删除以下两行:

            ToArray().
            Cast<DataRow>().

答案 1 :(得分:1)

您还可以考虑使用Linq to DataSet中定义的DataRow extensions

类似的东西:

string keys = string.Join(",", from row in table.AsEnumerable()
                               where (row.Field<int>("AllowInput") == 1)
                               select row.Field<string>("TypeName"));