#c# #asp.net #asp.net-mvc #entity-framework
#c# #asp.net #asp.net-mvc #entity-framework
Вопрос:
Я должен извлечь 20 верхних строк, используя этот запрос, и предложение like не работает. Кто-нибудь может сказать мне, почему / помочь мне найти решение?
var zipcodes = (from results in db1.ZipCodes1
where results.CityType == "D" amp;amp; results.ZIPCode like '%ZC %'
select new Ajaxresults
{
ZIPCode= results.ZIPCode,
CityName = results.CityName,
StateAbbr = results.StateAbbr,
StateName = results.StateName
}).GroupBy(o => o.ZIPCode);
Комментарии:
1. используйте
results.ZIPCode.Contains("ZC ")
вместо like.2. я должен выбрать 20 лучших строк в приведенном выше запросе
3. @aligray поместите свой ответ в поле «Ваш ответ», а не в качестве комментария.
4. Затем вам нужно будет добавить
.Take(20);
к подходящей части вашего запроса.
Ответ №1:
Для выбора 20 верхних строк следует использовать оператор LINQ Take
var zipcodes = (from results in db1.ZipCodes1
...
).Take(20);
Ответ №2:
Код должен выглядеть следующим образом:
var zipcodes = (from results in db1.ZipCodes1
where results.CityType == "D" amp;amp; results.ZIPCode.Contains("ZC ")
select new Ajaxresults
{
ZIPCode= results.ZIPCode,
CityName = results.CityName,
StateAbbr = results.StateAbbr,
StateName = results.StateName
}).GroupBy(o => o.ZIPCode).Take(20);
Комментарии:
1. я должен создать модель представления в соответствии с этим результатом, как я могу это сделать
2. в вашем классе view model создайте свойство Zipcodes типа IEnumerable<AjaxResults>.
Ответ №3:
Строка.Метод Contains будет переведен в соответствующий оператор SQL LIKE. Вы могли бы изменить свой запрос на что-то подобное:
var zipcodes = (from results in db1.ZipCodes1
where results.CityType == "D"
amp;amp; results.ZIPCode.Contains("ZC ")
select new Ajaxresults
{
ZIPCode= results.ZIPCode,
CityName = results.CityName,
StateAbbr = results.StateAbbr,
StateName = results.StateName
}).GroupBy(o => o.ZIPCode);