Правда, только что понял это после того, как я разместил редактирование, но забыл удалить его: P

тствую

Я пытаюсь найти способ, используя Linq-to-SQL, чтобы получить первые 15 записей, которые имеют более высокую фамилию, чем «Ян».

Когда я использую это в SQL, я получаю каждого члена, чья фамилия начинается с любых букв выше, чем «Jan» в алфавитном порядке.

Однако используяquery.Where(m=>m.LastName > "Jan") не работает, к сожалению.

Кто-нибудь знает, как мне этого добиться?

 Heini Høgnason18 янв. 2011 г., 12:01
Будет ли Jansen действительной фамилией?

Ответы на вопрос(2)

query.Where(m => m.Substring(0, 3).CompareTo("Jan") > 0);
Решение Вопроса

Вы можете попробовать:

query.Where(m => m.LastName.CompareTo("Jan") > 0)

В конце концов, именно так вы и пишете в обычном C #.

Не ясно, является ли это LINQ to Objects или другим провайдером. Если это LINQ to Objects, вам следует рассмотреть возможность использования явного StringComparer. Например:

query.Where(m => StringComparer.CurrentCulture.Compare(m.LastName, "Jan") > 0)

это дает понять, какое сравнение вы хотите. Если вы используете что-то вроде LINQ to SQL, это может не сработать - я полагаю, что вы получите все виды сравнений, с которыми может справиться поставщик.

 Jon Skeet18 янв. 2011 г., 12:21
@Theun: просто измени> 0 в>= 0.
 Theun Arbeider18 янв. 2011 г., 12:05
Первое решение работает. К сожалению, у меня нет достаточно представителей, чтобы поднять это!
 Theun Arbeider18 янв. 2011 г., 12:11
Просто маленький sidenote, С этим он получает все выше "Ян", но он пропускает "Ян" .. есть ли способ включить его?
 Theun Arbeider18 янв. 2011 г., 12:43
Правда, только что понял это после того, как я разместил редактирование, но забыл удалить его: P

Ваш ответ на вопрос