我总是需要你的帮助:)
我得到了一个 DataTable
,它有以下列:
标题地址分支BRANCH1 BRANCH2 BRANCH3
因为我不想执行另一个 MySql 查询来只获取分支,
我想我可以在 DataTable
上执行 LINQ
查询并获得不同的值。
child ,我错了......它并不像我想象的那么简单。
谁能帮我解决这个问题? (首选 Lambda 表达式)
编辑:
如果我不清楚,我需要所有行的所有分支。
最佳答案
试试这个:-
var rows = dataTable.AsEnumerable();
rows.Select(x => x["BRANCH"])
.Union(rows.Select(x => x["BRANCH1"]))
.Union(rows.Select(x => x["BRANCH2"]))
.Union(rows.Select(x => x["BRANCH3"]));
这会获取表中所有 BRANCH 列的所有值,并使用 Union()
来 a) 将它们连接到一个列表中,以及 b) 删除重复项,为您提供不同的值。
(注意:Union()
函数删除重复值。为了保留重复项,可以使用 Concat()
代替 Union()
)
--- 编辑 ---
如果你想丢弃空值,用户Where()
,例如:-
var rows = dataTable.AsEnumerable();
rows.Select(x => x["BRANCH"])
.Union(rows.Select(x => x["BRANCH1"]))
.Union(rows.Select(x => x["BRANCH2"]))
.Union(rows.Select(x => x["BRANCH3"]))
.Where(x => x != null);
关于c# - DataTable 从多个列中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406723/