Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 LINQ to Objects, обший вопрос.  [new]
FordSoft
Member

Откуда:
Сообщений: 41
Доброго утра!

Подскажите пожалуйста с реализацией такого момента.

Есть класс SampleClass:
class SampleClass
{
public DateTime TimeStamp {get;set;}
}


Есть коллекция элементов типа SampleClass, добавляю туда 500 000 объектов типа SampleClass, упорядочных по свойству TimeStamp, от меньшего к большему.

List<SampleClass> coll = new List<SampleClass>();
coll.AddRange(...500 000 элементов);


Так вот, когда я вызываю методы Linq что то типа:

var fromStart = new DateTime(2013, 01, 08, 12, 00, 00);
var fromEnd = new  DateTime(2013, 01, 08, 13, 00, 00);

var intervals = coll.Where(s=> s.TimeStamp >= fromStart && s.TimeStamp <= fromEnd).ToList();


Верно ли я думаю что Linq побежит по все коллекции, что бы сравнить все 500 000 объектов?
И возможно ли ограничить Linq что бы он бежал не по всей коллекции а только по тому диапазону который был задан, ведь коллекция упорядочена от меньшего к большему.
8 янв 13, 06:01    [13735133]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to Objects, обший вопрос.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6192
FordSoft
Верно ли я думаю что Linq побежит по все коллекции, что бы сравнить все 500 000 объектов?

Проверяется элементарно:
var l = new[] { 1, 2, 3, 4, 5 };
var l1 = l.Where(n =>
{
  Console.WriteLine("Inside where: {0}", n);
  return n > 3;
});
l1.ToList().ForEach(Console.WriteLine);


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

См. Skip/SkipWhile.
8 янв 13, 08:39    [13735175]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to Objects, обший вопрос.  [new]
bazile
Member

Откуда:
Сообщений: 3082
FordSoft, метод Where перебирает всю последовательность. Раз ты знаешь что последовательность упорядочена, то вызывай последовательно SkipWhile/TakeWhile:
var intervals = coll.SkipWhile(s => s.TimeStamp < fromStart).TakeWhile(s => s.TimeStamp <= fromEnd).ToList();
8 янв 13, 10:46    [13735268]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to Objects, обший вопрос.  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Сон Веры Павловны
Проверяется элементарно

Даже и проверять не надо, достаточно на глаз оценить скорость выполнения циклов.

http://codearticles.ru/Home/ArticleView/2205
8 янв 13, 12:04    [13735395]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to Objects, обший вопрос.  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
МСУ
Сон Веры Павловны
Проверяется элементарно

Даже и проверять не надо, достаточно на глаз оценить скорость выполнения циклов.

http://codearticles.ru/Home/ArticleView/2205
Наш гениальный "пальцы веером глазомерщик" пользоваться объективными методами оценки производительности все никак не научится...
Но, глядишь, чуть-чуть почитает документацию, и "внезапно" откроет для себя TimeSpan или Stopwatch...
8 янв 13, 14:45    [13735981]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to Objects, обший вопрос.  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
sphinx_mv
Наш гениальный "пальцы веером глазомерщик" пользоваться объективными методами оценки производительности все никак не научится...

"Наша неугомонная codemonkey", я "учился" пользоваться объективными методами оценки производительности, когда ты еще сопли по земле размазывал.

sphinx_mv
Но, глядишь, чуть-чуть почитает документацию, и "внезапно" откроет для себя TimeSpan или Stopwatch...

Это "открытие" мной было запосщено на этом форуме еще до твоего рождения: 5894645, аж 7 июля 2008 года. Жги еще, времязамерятель
8 янв 13, 15:07    [13736146]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить