Линк к юридическим лицам - PullRequest
4 голосов
/ 24 мая 2011

Как мне преобразовать этот запрос в linq для сущностей с каркасом сущностей:

SELECT  customer_id,
    customer_name,
    customer_code
FROM dbo.V_STF_CUSTOMER
WHERE   company_id=@company_id AND
ORDER BY    CASE
            WHEN ISNUMERIC(customer_name)=1 THEN 1
            ELSE 0
        END,
        customer_name

У меня есть это:

return CUstomers.GetQuery().
            Where(x => x.CompanyId == companyId).
        OrderBy(??This is my problem??);

Я не знаю, как перевести заказ. Есть идеи?

Ответы [ 3 ]

8 голосов
/ 24 мая 2011
return Customers.GetQuery().
            Where(x => x.CompanyId == companyId).
        OrderBy(x=> SqlFunctions.IsNumeric(x.customer_name)).
        ThenBy(x=> x.customer_name);
1 голос
/ 24 мая 2011

Вы можете использовать SqlFunctions.IsNumeric в своем запросе для сопоставления с IsNumeric на Sql Server.

Что-то вроде:

        var results = from c in customers
                      where c.companyId = companyId
                      orderby SqlFunctions.IsNumeric(c.customerName) == 1 ? 1 : 0, c.customerName
                      select new { c.customerId, c.customerName, c.customerCode };
0 голосов
/ 24 мая 2011

Сначала я думаю, что что-то не так с запросом SQL в

WHERE   company_id=@company_id AND

почему вы добавили AND?

вы можете достичь ISNUMERIC только в Entity Framewwork (не linq to sql), используя SqlFunctions.IsNumeric

return CUstomers.GetQuery().
            Where(x => x.CompanyId == companyId).
            OrderBy(x => SqlFunctions.IsNumeric(x.customer_name)).
            ThenBy(x => x.customer_name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...