ADO.NET Entity Framework: преобразование строки в Int в Where / OrderBY - PullRequest
3 голосов
/ 15 августа 2011

Я пишу запрос LINQ к ObjectContext.Что в сущности мне нужно сделать в LINQ to Entities, так это (я знаю, это не сработает, но я делаю это таким образом, чтобы проиллюстрировать):

from c in context.Table
where key == int.Parse(c.KeyAsString)
order by int.Parse(c.KeyAsString)
select c

Я не был уверен, было ли этовозможно ... кто-нибудь знает способ?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 15 августа 2011

попробуйте наоборот. Я предполагаю, что «ключ» - это переменная int, поэтому приведение ее к строке выполняется с помощью ToString (), и я использую ее для сравнения с KeyAsString и в порядке, не используя приведение:

var keyString = key.ToString();
var query = from c in context.Table
where keyString == c.KeyAsString
order by c.KeyAsString
select c

если у вас возникли проблемы с заказом, используйте метод, подобный ToList() или ToArray(), чтобы вытянуть результаты в память, и там вы сможете привести к int или использовать собственный компаратор.

1 голос
/ 15 августа 2011

Это не самое чистое решение, но оно будет работать, пока все ваши строки являются действительными целыми числами. Это также может быть использовано с двойными символами

var query = from c in context.Table
            let IntOrder = context.Table.Take(1).Select(x => c.KeyAsString).Cast<int>().FirstOrDefault()
            where IntOrder == key
            orderby IntOrder
            select c; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...