LINQ 查询,其中完整组满足条件

本文关键字:满足 条件 查询 LINQ | 更新日期: 2023-09-27 18:13:56

我存储了很多这样的文本行:

1|1000|1|0|Text Message|||
1|1000|1|1|Text Message|||
1|1000|2|0|Text Message|||
1|1000|2|1|Text Message|||
1|1000|3|0|Text Message|||
1|1001|1|0|Text Message|||

在集合中:List<ObjRow> listRows

这是相应的类:

public class ObjRow
{
    private string n_Par { get; set; }
    private string n_Rad { get; set; }
    private string n_Lang { get; set; }
    private string n_Line_Mex { get; set; }
    private string text_Mex { get; set; } 
    private int n_Row { get; set; }
}

我想找到哪些行组(按属性n_Rad分组,2° PIPE 值(没有值n_Lang == 3(3° PIPE 值(。

如何使用 LINQ 执行此操作?

LINQ 查询,其中完整组满足条件

这应该是你想要的:

var groupsWithoutLang3  = listRows
             .GroupBy(o => o.n_Rad)
             .Where(g => !g.Any(o => o.n_Lang == "3"));

它仅选择没有ObjRow的组 n_Lang == "3" .

var groups = listRows.GroupBy(row => row.Rad);
var result = groups.Where(group => !group.Any(item => (item.Lang == 3)));

这将按Rad对行进行分组,然后选择不包含Lang为 3 的行的组。