根据一个列值 取去该行值
如: ID NAME AGE
2 3 4
5 6 7
根据2 取出来 234
根据5 取出来567
用了Select 取出来还是这个整表
Linq 也没办法
-·--·-
麻烦大家了 谢谢
Select是投影,查询要用Where,不过Where查询返回的是多条数据,建议是使用实体类容器,比较DataTable方便多了,DataTable取值要进行拆箱转换,即麻烦还浪费性能
static void Start() {
var dt = StructTable();
var ids = dt.AsEnumerable().Select(p => p["ID"]).ToArray(); //将表中的所有ID投影到一个数组中,不能用来查询
//先将DataTable转成Enumerable,然后通过Where查询符合条件的DataRow,最后再枚举结果
foreach (var dr in dt.AsEnumerable().Where(p => Convert.ToInt32(p["ID"]) == 2)) {
//每次枚举的是DataTable的DataRow,即数据表中的数据行,通过列名就能获取行中的数据
int id = Convert.ToInt32(dr["ID"]);
string name = dr["Name"].ToString();
int age = Convert.ToInt32(dr["Age"]);
}
}
static DataTable StructTable() {
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("Age", typeof(int)));
DataRow dr1 = dt.NewRow();
dr1["ID"] = 2;
dr1["Name"] = "3";
dr1["Age"] = 4;
DataRow dr2 = dt.NewRow();
dr2["ID"] = 5;
dr2["Name"] = "6";
dr2["Age"] = 7;
dt.Rows.Add(dr1);
dt.Rows.Add(dr2);
return dt;
}
}
感谢 谢谢
你题是不是写错了 “根据一个列值 取去该行值” “根据5 取出来456”
– 韆 2年前@韆: 嗯 写错了 不好意思
– 很OKResult 2年前