【问题标题】:Grouping and Ordering Semi Written Lambda Query半书面 Lambda 查询的分组和排序
【发布时间】:2018-05-14 16:56:05
【问题描述】:
public class Car
{
    [JsonProperty("name")]
    public string Name{get;set;}
    [JsonProperty("type")]
    public string Type{get;set;}
}

public class CarOwner
{
    [JsonProperty("name")]
    public string Name{get;set;}
    [JsonProperty("gender")]
    public string Gender{get;set;}
    [JsonProperty("age")]
    public int Age{get;set;}
    [JsonProperty("cars")]
    public List<Car> Cars{get;set;}
}

public class Result
{
    public string Gender { get; set; }
    public List<string> Name { get; set; }
}

我尝试过的:

var z = m.Where(b => b.Cars != null).Select(k => new Result{Gender = 
k.Gender, Name = k.Cars.Where(t => t.Type.Contains("Heavy")).Select(h => 
h.Name).ToList()});

我需要按性别分组,并按字母顺序显示其下的所有汽车名称。例如..g

男: 大使(按字母排序) 兰博基尼 马鲁蒂

女性: 布加迪(按字母顺序排列) 马鲁蒂 滑板车

【问题讨论】:

  • 请找到JSOn结构:
  • 首先将您的性别设为枚举

标签: c# asp.net linq lambda


【解决方案1】:

您已经知道自己需要做什么,而这正是您所需要的。

 var res = owners
             .GroupBy(o => o.Gender)
             .Select(r => new Result
         {
             Gender = r.Key,
             Name = r
             .SelectMany(co => co.Cars)
             .Select(c => c.Name)
             .OrderBy(car => car).ToList()
         });

【讨论】:

  • 谢谢 Bpse_geek。将这段代码放在哪里的一个小帮助。是 z 变量吗? var z = m.Where(b => b.Cars != null).Select(k => new Result{Gender = k.Gender, Name = k.Cars.Where(t => t.Type.Contains("重")).Select(h => h.Name).ToList()});
  • 用我提供的替换你的 LINQ。这里的所有者变量是所有者列表。列表
  • 我建议您全面了解 LINQ 概念。这是您可以开始的链接 - docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
  • 对象引用未设置为对象错误的实例。因为其中一辆车是空的,必须处理。
  • 我不会知道所有的边缘情况和你所有的用例,所以你需要注意那些。如果此逻辑适合您,请将其标记为答案。谢谢
猜你喜欢
  • 2016-05-24
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多