запросы в entity framework

#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);