And*_*ers 27 c# sql t-sql linq linq-to-sql
如何将其转换为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
Run Code Online (Sandbox Code Playgroud)
谢谢!
Bot*_*000 40
也许这有效:
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() };
Run Code Online (Sandbox Code Playgroud)
Pra*_*ana 12
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" : "-"
};
Run Code Online (Sandbox Code Playgroud)
使用类似的东西:
class AgeHelper
{
private static Dictionary<IEnumerable<int>, string> dic = new Dictionary<IEnumerable<int>, 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+";
}
}
}
Run Code Online (Sandbox Code Playgroud)
@ Botz3000的其余部分回答:
from u in users
let range = new AgeHelper()[u.Age]
...
Run Code Online (Sandbox Code Playgroud)