c# - DataTable 从多个列中选择不同的值

标签 c# linq lambda datatable

我总是需要你的帮助:)

我得到了一个 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/

相关文章:

java - 如何使用 java lambda 获取子元素以放入 Map<Long, List<Long>>?

c++ - 在默认初始化程序中使用 lambda 与使用成员函数

c# - From子句中的语法错误(可能是最简单的from子句)

c# - 变量如何寻址RAM?

c# - 从 CSV 文件中删除空行和空列 - C#

c# - LINQ to Objects Performance - 用于长时间运行进程的巨大数据集

.net - 在 IQueryable 的 Select 中调用 DTO 转换器

c# - 在 C# 中使用 Linq to SQL 将匿名类型转换为列表 <T>

lambda - 在Scheme中柯里化(Currying)一个函数n次

C# - 如何避免 SQL 命令循环中的最大连接池错误