gpt4 book ai didi

c# - LINQ - 根据条件过滤重复项

转载 作者:行者123 更新时间:2023-11-30 12:11:09 26 4
gpt4 key购买 nike

我正在开发一个 .NET 应用程序,我需要根据条件从 SQL Server 2008 中过滤数据。我的数据结构如下所示:

enter image description here

结果应按 Key 进行分组和排序。默认情况下,应为每个键返回 Revision null 的行,但如果设置了 revisionParameter,则应返回具有相应 Revision 编号的行。如果参数是两个,输出应该是:

abc     2     FALSE
def null TRUE
ghj 2 FALSE
klm null TRUE

如何在 LINQ 中完成此操作?谢谢

编辑:对 lazyberezovsky 的回应:您的 LINQ 表达式重写为 lambda:

partial void RuleEntriesByUserSaveId_PreprocessQuery(int? UserSaveId, ref IQueryable<RuleEntry> query)
{
query = query.Where(re => re.Revision == null || re.Revision == value)
.GroupBy(re => re.Key)
.Select(g => g.FirstOrDefault(x => x.Revision != null) ?? g.First());
}

最佳答案

from r in Table
where !r.Revision.HasValue || r.Revision.Value == value
group r by r.Key into g
select g.FirstOrDefault(x => x.Revision.HasValue) ?? g.First()

这将选择修订等于 null 或指定值的记录。按键分组后,我们尝试找到任何具有修订值的记录(该值将等于过滤器)。如果没有修改过的记录,我们就从组中取第一条记录。

关于c# - LINQ - 根据条件过滤重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16033080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com