2013-02-15 2 views
0

Я работаю над решением ASP.NET MVC4.Запросить мою модель в диапазоне значений

У меня есть страница с критериями поиска, что-то вроде этого: номер

  • транспорта из: _ _ _ _ _
  • Транспорт номер в: _ _ _ _ _ _

Теперь я хотел бы запросить мою модель для этого диапазона.

[DataContract] 
public class SearchParametersTransportDTO 
{ 
    [DataMember] 
    public string TransportNumberFrom { get; set; } 

    [DataMember] 
    public string TransportNumberTo { get; set; } 
} 


public SearchResultDTO<Transport> SearchTransports(SearchParametersTransportDTO dto) 
{ 
    using (var unitOfWork = UnitOfWorkFactory.Create()) 
    { 
     var transportRepository = unitOfWork.Create<Transport>(); 
     var transports = transportRepository.GetAll(); 
     transports = transports.Where(s => s.TransportNumber.Contains(dto.TransportNumberFrom)); 
     ... 
    } 
    ... 

Я не нашёл возможности для поиска определенного диапазона от ... до.

Пожалуйста, обратите внимание, что мой транспорт номер не является INT, но строка (например: 'AZE.12/0009', 'AZE.12/0010', ...)

Любая идея?

Спасибо.

+0

Можете уточнить, откуда пришел 'dto', и что такое' TransportNumberFrom'? Кроме того, все транспортные номера имеют одинаковый точный формат (XXX.NN/NNNN)? – PinnyM

+0

Я уточнил свой вопрос, чтобы быть более точным о dto. TransportNumber - это критерии earch в моем dto. И да, все транспортные номера имеют одинаковый формат. Благодарю. – Bronzato

ответ

0

Смежный вопрос имеет этот ответ: LINQ Between Operator

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

var query = transports.Between(
      t => 
      t.TransportNumber, TransportNumberFrom, TransportNumberTo); 
+0

Спасибо. Очень чистый. – Bronzato

+0

В этом коде есть некоторые оговорки. Он должен работать со строками, когда вы переходите непосредственно к источнику данных IQueryable, но если вы пытаетесь сделать строки для источника данных IEnumerable, он взорвется. –

Смежные вопросы