当前位置: 首页 > 知识库问答 >
问题:

C#Linq如何选择数据表中多列的不同行数

巫马泰
2023-03-14

我有一个包含多个键列(key1,key2,...,keyN)。我想对表中符合特定条件的不同组合键进行计数(IsInError = false)。

基本上我想执行查询

从中选择 COUNT(*) 从表中选择不同的 key1, key2, ..., keyN 其中 IsInError = 'false') A

数据表上。

我做了一些研究,发现对于一个只包含一个键(并且没有“where”)的表,我可以这样做

DataTable table = new DataTable();

int nRows = table
    .AsEnumerable()
    .Select(r => r.Field<string>("key1"))
    .Distinct()
    .Count();

但是对于多个键和一个条件,我该怎么做呢?

共有2个答案

何松
2023-03-14

group by可能更适合这种情况。

它将列分组为不同的行,并根据需要返回计数。

即。

var groups = table.GroupBy(_ => new {_.Key1, _.Key2, _.KeyN})
                  .Select(_ => new { key = _.Key, count = _.Count());

这是未经测试的代码,但应该有助于为您指明正确的方向。

邢杰
2023-03-14

尝试这样的东西:

table.AsEnumerable().Where(v => v.Field<bool>("IsInError") == false).Select(_ => new { key1 = _.key1, key2 = _.key2, ...., keyn=_.keyn }).Distinct().Count();
 类似资料:
  • 问题内容: 在SQL中,我有: 我有一个WPF应用程序。 问题答案: 编辑:添加了一个子句

  • 问题内容: 是否可以对位于同一服务器上的不同数据库进行选择(或插入)语句?如果是,怎么办? 问题答案: 您将使用以下语法指定数据库 例:

  • 我在火花中这样做 这张表上没有主键,我想根据每个不同的cityId随机获取一行 例如,这是一个正确的答案 例如,这也是一个正确的答案 想到的一种方法是使用< code>group by。然而,这要求我在另一列上使用聚合函数。(比如min())。然而,我只想拉出一整行(不管是哪一行)。

  • 作为 LINQ 查询的一部分,我有一系列列,其中只有一列将包含一个值,如何将该单个值分配给变量而不必执行类似操作 类似于这个问题,但用LINQ代替SQL。 不幸的是,用SQL处理数据库端的任何事情都不是一个选项。

  • 问题内容: 我正在寻找一种等效于SQL的方法 pandas sql比较与无关。 仅适用于单个列,因此我想我可以合并这些列,或将它们放在列表/元组中并进行比较,但这似乎是熊猫应该以更原生的方式进行的操作。 我是否缺少明显的东西,或者没有办法做到这一点? 问题答案: 您可以使用该方法来获取DataFrame中的唯一行: 如果只想使用某些列来确定唯一性,则也可以提供关键字参数。请参阅文档字符串。

  • 问题内容: 我需要从3个表中获得不同的值。 当我执行此代码时: 我收到一条错误消息,提示我的“城市”一栏不明确。 我也尝试过这个: 有了这段代码,我的表什么都收不到。 让我向您展示我正在尝试做的事的示例: 我需要得到这样的结果 城市的顺序对我来说并不重要,我只需要拥有所有城市,每个城市应该只有一个代表。 任何的想法?我当时想在中使用,但没有连接,所以我不能使用它。 问题答案: 该关键字将返回结果列