Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#-将DataTable转换为List,并将特定列计数为Linq形式 如何将Datatable转换为可以访问其列的列表_C#_Linq - Fatal编程技术网

c#-将DataTable转换为List,并将特定列计数为Linq形式 如何将Datatable转换为可以访问其列的列表

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

特定列中的Linq计数

DataTable dt=新的DataTable(); 列表=数据表(); label1.Text=list.Count…在哪里? label2.Text=list.Count…在哪里


对于第一个问题:

为了将
数据表
转换为
列表
,首先必须定义一个与数据表列匹配的类

因为您尚未为
数据表定义任何架构。
作为一个示例,我将以一个名为
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");