|
linq & datatable
|
|||
---|---|---|---|
#18+
как проверить с помощью linq если запись в DataTable? делаю так: var res = from r in myTable.AsEnumerable() where r.Field<int>("ID") == ID select r вообщем я получаю что-то в результат. А как проверить вернул запрос что-то или нет? зы: сори если туплю((( пишу редко( ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2011, 22:18 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУres.Count()res.Any() ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 05:47 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Алексей КМСУres.Count()res.Any() myTable.Select("ID=3").Length ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 10:01 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУmyTable.Select("ID=3").LengthНет! Будет цикл по всем тысячам найденных записей + создан массив! Нам это не надо! Должно быть: IEnumerable<DataRow> + Any() ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 10:31 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... res.Any() myTable.Select("ID=3").Length круть... грац! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 11:18 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Алексей КМСУmyTable.Select("ID=3").LengthНет! Будет цикл по всем тысячам найденных записей + создан массив! Нам это не надо! Должно быть: IEnumerable<DataRow> + Any() Учту. Спс. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 11:20 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Алексей КМСУmyTable.Select("ID=3").LengthНет! Будет цикл по всем тысячам найденных записей + создан массив! Нам это не надо! Должно быть: IEnumerable<DataRow> + Any() И у AsEnumerable будет цикл, который создает EnumerableRowCollection<DataRow>. http://msdn.microsoft.com/ru-ru/library/system.data.datatableextensions.asenumerable.aspx Перечисляемый объект, который возвращается методом AsEnumerable, жестко привязан к создавшему его объекту DataTable. При нескольких вызовах метода AsEnumerable будет возвращено несколько независимых объектов для выполнения запроса, все из которых привязаны к исходному объекту DataTable. Не путать с AsEnumerable<TSource> AsEnumerable<TSource>Метод AsEnumerable<TSource>(IEnumerable<TSource>) не выполняет никаких действий, кроме изменения типа времени компиляции для последовательности source: тип, реализующий интерфейс IEnumerable<T>, изменяется на сам тип IEnumerable<T> Так DataTable.AsEnumerable тормознее, чем DataTable.Select. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 11:38 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... Нет! Будет цикл по всем тысячам найденных записей + создан массив! Нам это не надо! Должно быть: IEnumerable<DataRow> + Any() И у AsEnumerable будет цикл, который создает EnumerableRowCollection<DataRow>. Где там цикл? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 11:55 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Execute && Test Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Тесты в миллисекундах. №DataTableLinq1,1406,1732,0,1573,0,1584,0,1555,0,1576,0,1517,0,153 Первый поиск просаживается, потом кеширование и нереальная производительность. Вопросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:00 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
№DataTableLinq11406173201573015840155501576015170153 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:01 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУА теперь сделайте, чтобы в критерий попадало много записей вместо одной. Чтобы тонким местом стало создание массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:04 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Алексей КМСУА теперь сделайте, чтобы в критерий попадало много записей вместо одной. Чтобы тонким местом стало создание массива. 1. Немного налажал со значение в 3000000, но суть не меняется :) 2. Почему тонким? Там же обычный фильтр в селекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:08 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУПервый поиск просаживается, потом кеширование и нереальная производительность.Походу там внутри мутится какой-то индекс... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:09 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУпотом кеширование и нереальная производительность. Вопросы? А в каком случае "кэш" очистится? Точнее как,... datatable статична почти на всем этапе выполнения. Она заполняется при старте программы и далее к ней идут только запросы. Так вот будет ли эта производительность выстреливать на протяжении всего исполнения или после того как ход выполнения убежит за пределы класса в котором находится мой метод или за пределы метода? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:11 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУ2. Почему тонким? Там же обычный фильтр в селекте.Сделать, чтобы в критерии фильтрации попадало много записей. Тогда будет создаваться большой массив с возвращаемыми значениями. Тогда, наверное, будет медленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:11 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Алексей КМСУ2. Почему тонким? Там же обычный фильтр в селекте.Сделать, чтобы в критерии фильтрации попадало много записей. Тогда будет создаваться большой массив с возвращаемыми значениями. Тогда, наверное, будет медленно. Да, тут согласен. Код: plaintext
Вообще тупняк, по сравнению с Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:16 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
unqТак вот будет ли эта производительность выстреливать на протяжении всего исполнения или после того как ход выполнения убежит за пределы класса в котором находится мой метод или за пределы метода? Нужно тестировать под нагрузкой в реальных условиях, сходу мне сложно сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:18 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУunqТак вот будет ли эта производительность выстреливать на протяжении всего исполнения или после того как ход выполнения убежит за пределы класса в котором находится мой метод или за пределы метода? Нужно тестировать под нагрузкой в реальных условиях, сходу мне сложно сказать. мб. сборщик мусора имеет отношение? Тогда вообще грустно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:19 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
unqмб. сборщик мусора имеет отношение? Не думаю. Вся суть в реализации DataTable + фильтр. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:21 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
Короче. Для тыщёнки другой записей в DataTable: Код: plaintext
и не нужен никакой Linq. К тому же ещё лишний неймспейс тянуть придется ) Кому не нравится - в сад! ! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:24 |
|
linq & datatable
|
|||
---|---|---|---|
#18+
МСУКороче. Для тыщёнки другой записей в DataTable: Код: plaintext
и не нужен никакой Linq. К тому же ещё лишний неймспейс тянуть придется ) Кому не нравится - в сад!LINQ не нужен. Нужен Dictionary. Как по-вашему DataTable.Select добивается таких результатов? Правильно - мутит индекс . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2011, 12:39 |
|
|
start [/forum/topic.php?fid=17&fpage=39&tid=1350560]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 301ms |
total: | 435ms |
0 / 0 |