我正在为以下查询寻找LINQ等效项:
SELECT UPPER(SUBSTRING(CompanyName,1,1)),COUNT(*)FROM MyTable GROUP BY UPPER(SUBSTRING(CompanyName,1,1))
提前致谢.
好吧,我不知道它是否会转换为适当的SQL查询,但你可以试试这个:
var query = from company in db.MyTable
let firstChar = company.CompanyName.Substring(0, 1).ToUpper()
group company by firstChar into grouped
select new { FirstChar = grouped.Key, Count = grouped.Count() };
Run Code Online (Sandbox Code Playgroud)
这是一个LINQ to Objects示例:
using System;
using System.Collections.Generic;
using System.Linq;
class Test
{
static void Main()
{
var companies = new[] {
new { CompanyName = "One", CompanyID=1 },
new { CompanyName = "Two", CompanyID=2 },
new { CompanyName = "Three", CompanyID=3 },
new { CompanyName = "Four", CompanyID=4 },
new { CompanyName = "Five", CompanyID=5 },
new { CompanyName = "Six", CompanyID=6 },
};
var query = from company in companies
let firstChar = company.CompanyName.Substring(0, 1).ToUpper()
group company by firstChar into grouped
select new { FirstChar = grouped.Key, Count = grouped.Count() };
foreach (var entry in query)
{
Console.WriteLine(entry);
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
{ FirstChar = O, Count = 1 }
{ FirstChar = T, Count = 2 }
{ FirstChar = F, Count = 2 }
{ FirstChar = S, Count = 1 }
Run Code Online (Sandbox Code Playgroud)
我是否至少正确地说这是你期望看到的?
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |