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();

它可以工作,但是我想在这个组中删除这个可怕的重复项(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();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章