C# 使用LINQ将数据表行转换为单行
我在一个数据表中有一列和多行,我希望它们在一行中,并且不希望循环遍历数据表的每一行, 下面是示例数据表C# 使用LINQ将数据表行转换为单行,c#,linq,datatable,C#,Linq,Datatable,我在一个数据表中有一列和多行,我希望它们在一行中,并且不希望循环遍历数据表的每一行, 下面是示例数据表 Results ------- Clinet1 Clinet2 Clinet3 Clinet4 我想要一根像这样的线 Clinet1、Clinet2、Clinet3、Clinet4但使用LINQ而不使用for循环。 我尝试了下面的代码,但它对我不起作用 string Details = myDataTable.Rows .Cast&
Results
-------
Clinet1
Clinet2
Clinet3
Clinet4
我想要一根像这样的线
Clinet1、Clinet2、Clinet3、Clinet4
但使用LINQ而不使用for循环。
我尝试了下面的代码,但它对我不起作用
string Details = myDataTable.Rows
.Cast<DataRow>()
.Where(x => x["Results"].ToString();
string Details=myDataTable.Rows
.Cast()
。其中(x=>x[“结果”].ToString();
用于此
string Details = String.join(",", myDataTable.Rows
.Cast<DataRow>()
.Where(x => x["Results"] == UserName).ToArray());
string Details=string.join(“,”,myDataTable.Rows
.Cast()
。其中(x=>x[“结果”]==用户名).ToArray();
您可以使用返回一个IEnumerable
对象,其中泛型参数T
是DataRow
,并像这样将行连接到字符串中
string rows = string
.Join(",", myDataTable.AsEnumerable()
.Select(x => x["Results"]));
使用LINQ:
string Details = myDataTable.Rows.Cast<DataRow>()
.Where(x => x["Results"] == UserName)
.Select(i => i.ToString()).Aggregate((i, j) => i + "," + j)
string Details=myDataTable.Rows.Cast()
。其中(x=>x[“结果”]==用户名)
.Select(i=>i.ToString()).Aggregate((i,j)=>i+“,”+j)
LINQ也在内部使用循环。它只会使您的代码紧凑。什么是UserName
?您想基于什么进行过滤吗?对不起,现在没有UserName过滤器,我正在进行int-query。@Sangram:基本上我不想在记录上进行itrate,这需要花费太多时间。这就是为什么我使用DataTable而不是DataReader。