sql-server - 使用 linq 获取表中列的第一个字符

标签 sql-server linq

我正在为以下查询寻找等效的 LINQ:
SELECT UPPER(SUBSTRING(Company Name, 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() };

这是一个 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);
        }
    }
}

结果:
{ FirstChar = O, Count = 1 }
{ FirstChar = T, Count = 2 }
{ FirstChar = F, Count = 2 }
{ FirstChar = S, Count = 1 }

我至少说这就是你希望看到的吗?

关于sql-server - 使用 linq 获取表中列的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833045/

相关文章:

sql - 根据顺序对 SQL 结果进行分组

c# - SQL Server 2008 R2 的可重试 SQLBulkCopy

c# - 外部联接在 Linq 查询 : The method 'Join' cannot follow the method 'SelectMany' or is not supported 中不起作用

c# - 具有可为空日期时间的 linq

sql - Entity Framework : Retrieve data with a condition on two different context

sql-server - 什么是 MSSQL 数据库设计和版本控制的良好实践/工具?

sql - ( CASE WHEN [date] IS NULL THEN 0 ELSE 1 END)在我的枢轴中不起作用

c# - linq orderby 使用属性名称字符串

sql - 使用 join 等加速 SQL 查询

vb.net - Linq 在 ORDER BY 中自定义排序,其余结果按 asc 排序