Получить первые символы столбца в таблице с помощью linq - PullRequest
3 голосов
/ 07 мая 2009

Я ищу эквивалент LINQ для следующего запроса:

ВЫБРАТЬ ВЕРХНЮЮ (SUBSTRING (CompanyName, 1, 1)), COUNT (*) ИЗ ГРУППЫ MyTable ПО ВЕРХНЕМУ (SUBSTRING (CompanyName, 1, 1)) *

Заранее спасибо.

1 Ответ

7 голосов
/ 07 мая 2009

Хорошо, я не знаю, будет ли это переводиться в соответствующий запрос 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 }

Прав ли я, по крайней мере, сказать, что вы ожидаете увидеть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...