Csharp/C#教程:在LINQ中选择案例分享


在LINQ中选择案例

如何将其转换为LINQ?

select t.age as AgeRange, count(*) as Users from ( select case when age between 0 and 9 then ' 0-25' when age between 10 and 14 then '26-40' when age between 20 and 49 then '60-100' else '50+' end as age from user) t group by t.age 

谢谢!

也许这有效:

 from u in users let range = (u.Age >= 0 && u.Age < 10 ? "0-25" : u.Age >= 10 && u.Age < 15 ? "26-40" : u.Age >= 15 && u.Age < 50 ? "60-100" : "50+") group u by range into g select new { g.Key, Count=g.Count() }; 

检查这可能对你有帮助

 var query = from grade in sc.StudentGrade join student in sc.Person on grade.Person.PersonID equals student.PersonID select new { FirstName = student.FirstName, LastName = student.LastName, Grade = grade.Grade.Value >= 4 ? "A" : grade.Grade.Value >= 3 ? "B" : grade.Grade.Value >= 2 ? "C" : grade.Grade.Value != null ? "D" : "-" }; 

使用类似的东西:

 class AgeHelper { private static Dictionary, string> dic = new Dictionary, string> { { Enumerable.Range(0, 10), "0-25" }, { Enumerable.Range(10, 5), "26-40" }, { Enumerable.Range(15, 35), "60-100" } }; public string this[int age] { get { return dic.FirstOrDefault(p => p.Key.Contains(age)).Value ?? "50+"; } } } 

@ Botz3000的其余部分回答:

 from u in users let range = new AgeHelper()[u.Age] ... 

像这样的东西?

 var users = (from u in Users select new { User = u, AgeRange = u.Age >= 0 && u.Age <= 9 ? "0-25" : u.Age <= 14 ? "26-50" : u.Age <= 49 ? "60-100": "50+" }).GroupBy(e => e.AgeRange); 

我不知道如何使用LINQ语句创建这样的高效SQL。 但你可以使用:

  1. 使用存储过程(或函数),并从LINQ调用存储过程。
  2. 使用Direct SQL

当然你可以使用很多内联条件语句( ? : :),但我不认为结果会有效。

上述就是C#学习教程:在LINQ中选择案例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1008389.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐