c# - Linq:在 GroupBy 中使用变量
问题描述
我有帮助这个 LINQ 请求:我的 c#:
var stats = UoW.Repository
.Get(echangeFilter)
.GroupBy(a => new
{
Id = MyBLL.IsInComing(a.idSens) ? MyBLL.FindByNoContactModel(a.change.idTo.GetValueOrDefault()).id : MyBLL.FindByNoContactModel(a.change.idFrom.GetValueOrDefault()).id,
Tri = MyBLL.IsInComing(a.idSens) ? MyBLL.FindByNoContactModel(a.change.idTo.GetValueOrDefault()).Tri: MyBLL.FindByNoContactModel(a.change.idFrom.GetValueOrDefault()).Tri,
SensAppel = a.echange_sens.nom
})
.Select(group => new
{
group.Key.Id,
group.Key.Tri,
group.Key.SensAppel,
Count = group.Count(),
})
.OrderBy(g => g.Tri)
.ToList();
它有效,但我想在这个 groupBy 中删除这个可怕的重复(Id 和 Tri),我该如何处理?在概念上,我想用一个变量来调用这个三元一次
解决方案
如果使用查询语法,则可以声明变量。
这就是您的查询在查询语法中的样子(请正确命名您的变量。我不知道您实际上在做什么,所以我无法命名它们......):
var query = from a in UoW.Repository
.Get(echangeFilter)
group a by new
{
Id = MyBLL.IsInComing(a.idSens) ? MyBLL.FindByNoContactModel(a.change.idTo.GetValueOrDefault()).id : MyBLL.FindByNoContactModel(a.change.idFrom.GetValueOrDefault()).id,
Tri = MyBLL.IsInComing(a.idSens) ? MyBLL.FindByNoContactModel(a.change.idTo.GetValueOrDefault()).Tri: MyBLL.FindByNoContactModel(a.change.idFrom.GetValueOrDefault()).Tri,
SensAppel = a.echange_sens.nom
} into g
let b = new
{
group.Key.Id,
group.Key.Tri,
Count = group.Count(),
}
orderby g.Tri
select g;
var stats = query.ToList();
现在我们可以引入一个let
:
var query = from a in UoW.Repository
.Get(echangeFilter)
let x = MyBLL.IsInComing(a.idSens) ? MyBLL.FindByNoContactModel(a.change.idTo.GetValueOrDefault()) : MyBLL.FindByNoContactModel(a.change.idFrom.GetValueOrDefault())
group a by new
{
Id = x.id,
Tri = x.Tri,
SensAppel = a.echange_sens.nom
} into g
let b = new
{
g.Key.Id,
g.Key.Tri,
Count = g.Count(),
}
orderby g.Tri
select g;
var stats = query.ToList();
推荐阅读
- php - Centos-Webpanel 服务器模块,WHMCS 中登录到控制面板 404 错误
- laravel - Eloquent 从数据透视表中获取数据
- ios - 一个 tableView 单元中的两个 collectionView。collectionViews 没有出现
- java - 每当我运行 AVLTree.java 代码时都会出现 StackOverFlowError
- delay - FreeRTOS 卡在 prvCheckTasksWaitingTermination
- java - 如何在java中模拟TCP(流量控制和拥塞控制)?
- sql - 由于字段长度限制,将总和值分成多行
- python - 有没有办法解决连接两个以上的窗口而不会使pyqt5中的程序崩溃的问题?
- c - POSIX 中 sem_getvalue() 的语义
- javascript - 我无法在最终警报中获得甜蜜警报变量的值