c#-将DataTable转换为List,并将特定列计数为Linq形式 如何将Datatable转换为可以访问其列的列表
特定列中的Linq计数 DataTable dt=新的DataTable(); 列表=数据表(); label1.Text=list.Count…在哪里? label2.Text=list.Count…在哪里c#-将DataTable转换为List,并将特定列计数为Linq形式 如何将Datatable转换为可以访问其列的列表,c#,linq,C#,Linq,特定列中的Linq计数 DataTable dt=新的DataTable(); 列表=数据表(); label1.Text=list.Count…在哪里? label2.Text=list.Count…在哪里 对于第一个问题: 为了将数据表转换为列表,首先必须定义一个与数据表列匹配的类 因为您尚未为数据表定义任何架构。 作为一个示例,我将以一个名为dtUsers的数据表为例,其中包含3个cols和2个行,如下所示: ---------------------------- | Id | F
对于第一个问题: 为了将
数据表
转换为列表
,首先必须定义一个与数据表列匹配的类
因为您尚未为数据表定义任何架构。
作为一个示例,我将以一个名为dtUsers
的数据表为例,其中包含3个cols
和2个行
,如下所示:
----------------------------
| Id | Fname | Lname |
----------------------------
| 1 | John | Wick |
----------------------------
| 2 | Keanu | Reeves |
----------------------------
将其转换为类:
public class User
{
public int Id {get:set;}
public string Fname {get:set;}
public string Lname {get:set;}
}
现在有两种方法可以实现这一目标:
使用Newtonsoft.Json(Fast)
将数据表
转换为列表
的最简单方法是序列化
数据表,然后反序列化
为类
根据上面的例子,这里是如何做到这一点的:
//Assuming that the data is already in the datatable "dtUsers" we first serialize it.
var strUsers = JsonConvert.SerializeObject(dtUsers);
//will output an searialized object of the datatable as:'[{Id:1,"Fname":"John","Lname":"Wick"},{Id:2,"Fname":"Keanu","Lname":"Reeves"}]'
//now deserialize it back into a List<User> as:
var lstUsers = JsonConvert.DeserializeObject<List<User>>(strUsers);
用法:
var lstUsers = ConvertDatatableToList<User>(dtUsers);
对于仅包含Count()
的特定列:
var FnameCount = lstUsers.Count(w=>w.Fname=="John");
可能重复的
var FnameCount = lstUsers.Where(w=>w.Fname=="John").Count();
var FnameCount = lstUsers.Count(w=>w.Fname=="John");