Hey Nic, do you know if is there some difference between to use:

'connection.Query<Transaction>("select *
from Transactions where TransactionDate between.... etc")'

Instead Mono.Data.Sqlite?

Karl

From:  Nic Wise <[email protected]>
Date:  quarta-feira, 5 de setembro de 2012 11:24
To:  Alex Soto <[email protected]>
Cc:  "[email protected]" <[email protected]>
Subject:  Re: [MonoTouch] Monotouch.Dialog and Reusable Cells

Because, in sqlite-net (at least the version _I_ was using, which
might be old), if I did (unchecked code!!):

var items = from item in connection.Table<Transaction> where
item.TransactionDate between X and Y select item;

this would get all the items, then do the WHERE. So if I wanted 10
lines from this year, but I had 1000 from last year, it would load
1010 items, and return 10.

Not good. I changed it to use connection.Query<Transaction>("select *
from Transactions where TransactionDate between.... etc") and I got
the 10 back I wanted, in <10ms not 1-2 seconds.

Same goes for summary's (select sum(Price) from....).

For small data sets, or where you usually want ALL of them, the linq
option is fine. But for getting a subset of a large set, or to get an
aggregate of a large set, not so much.

Frank might have changed it since I did that tho, to make the WHERE
affect the sql, not do it after the objects are hydrated.



On Wed, Sep 5, 2012 at 2:33 PM, Alex Soto <[email protected]> wrote:
>  Hello Nic, something called my attention, why not to use LINQ??
> 
>  Hope you can elaborate on it
> 
>  Alex
> 
> 
> 
>  El 05/09/2012, a las 04:32 a.m., Nic Wise <[email protected]> escribió:
> 
>>  Yes and no.
>> 
>>  Out of the box: no. HOWEVER, if you add 1000 items into the root, it's
>>  only making
>> 
>>  5 + 3 + 3 (5 visible, 3 invisible above and below - basically: Visible
>>  + (50% of visible above) + (50% of visible below))
>> 
>>  actual cells, the rest is just managed objects, so fairly small. I've
>>  loaded 3500 elements into a list without any problem (make sure you
>>  load it OFF the main thread, and if you use Sqlite-net, dont use linq
>>  - use a SQL statement!)
>> 
>>  The YES part: you can work out where the scroll is, and dynamically
>>  load things when you get near the bottom. This doesn't work out of the
>>  box - you would need to work out which cells are visible, and if it's
>>  close enough to the end, load some more at the bottom.
>> 
>>  The other option is the "LoadMoreElement". This is in the
>>  "OldElements" folder, so it might need some work, but this allows you
>>  to put a cell in, the user taps it, and you can do whatever - load X
>>  more is the usual case.
>> 
>>  
>> https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialo
>> g/OldElements/LoadMoreElement.cs
>> 
>>  You could do the same tho - put a cell at the bottom, and if it's
>>  loaded (GetCell is called), then do the load in a background thread
>>  and insert the new cells above the "bottom" loader cell.
>> 
>>  Lots of ways :)
>> 
>>  N
>> 
>>  On Tue, Sep 4, 2012 at 8:32 PM, Guido Van Hoecke <[email protected]> wrote:
>>>  Hi Nic,
>>> 
>>>  Thanks for your answer.
>>> 
>>>  I should have phrased my question more precisely. Is it possible to not
>>>  instantiate all Elements and add them to the RootElement before the view
>>>  does appear, but rather create them as needed within a kind of
>>>  GetElement method?
>>> 
>>>  Guido
>>> 
>>>  On 4 September 2012 13:08, Nic Wise <[email protected]> wrote:
>>>>  Absolutely :)
>>>> 
>>>>  The default ones already do this
>>>> 
>>>>  
>>>> https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dia
>>>> log/Elements.cs#L271
>>>> 
>>>>  (and it's in other places too)
>>>> 
>>>>  IF you have made your own element, you are responsible for doing it,
>>>>  but you can, easily, do it.
>>>> 
>>>>  I suggest you split your GetCell into 2 parts:
>>>> 
>>>>  https://gist.github.com/3620212
>>>> 
>>>>  If you set colors, dont forget to reset it for each one - otherwise
>>>>  you end up with red bits where you want green etc :)
>>>> 
>>>> 
>>>> 
>>>> 
>>>>  On Tue, Sep 4, 2012 at 11:53 AM, Guido Van Hoecke <[email protected]>
>>>> wrote:
>>>>>  Hi,
>>>>> 
>>>>>  My app happily uses the Monotouch.Dialog framework.
>>>>> 
>>>>>  Some of its dialogs list values from a database. Basically my approach
>>>>>  is to create a new DialogViewController and wait for the
>>>>>  ViewWillAppear event.
>>>>> 
>>>>>  The corresponding event handler creates a new RootElement and fully
>>>>>  populates it with an Element for each of the retrieved database rows.
>>>>> 
>>>>>  I realise that this would e.g. build 1k cells for 1k rows, so I
>>>>>  probably should dequeue reusable cells and only build the Elements as
>>>>>  requested by the GetCell method.
>>>>> 
>>>>>  Is this possible within the MT.D framework using RootElement, Section
>>>>>  and Element objects?
>>>>> 
>>>>>  Thanks in advance
>>>>> 
>>>>>  Guido
>>>>> 
>>>>>  --
>>>>>  It is the nature of extreme self-lovers, as they will
>>>>>  set a house on fire, and it were but to roast their eggs.
>>>>>                 -- Francis Bacon
>>>>> 
>>>>>  http://vanhoecke.org ... and go2 places!
>>>>>  _______________________________________________
>>>>>  MonoTouch mailing list
>>>>>  [email protected]
>>>>>  http://lists.ximian.com/mailman/listinfo/monotouch
>>>> 
>>>> 
>>>> 
>>>>  --
>>>>  Nic Wise
>>>>  t.  +44 7788 592 806 | @fastchicken | http://www.linkedin.com/in/nicwise
>>>>  b. http://www.fastchicken.co.nz/
>>>> 
>>>>  mobileAgent (for FreeAgent): get your accounts in your pocket.
>>>>  http://goo.gl/IuBU
>>>>  Trip Wallet: Keep track of your budget on the go: http://goo.gl/ePhKa
>>>>  Earnest: Self-employed? Track your business expenses and income.
>>>>  http://earnestapp.com
>>>>  Nearest Bus: find when the next bus is coming to your stop.
>>>> http://goo.gl/Vcz1p
>>>>  London Bike App: Find the nearest Boris Bike, and get riding!
>>>> http://goo.gl/Icp2
>> 
>> 
>> 
>>  --
>>  Nic Wise
>>  t.  +44 7788 592 806 | @fastchicken | http://www.linkedin.com/in/nicwise
>>  b. http://www.fastchicken.co.nz/
>> 
>>  mobileAgent (for FreeAgent): get your accounts in your pocket.
>>  http://goo.gl/IuBU
>>  Trip Wallet: Keep track of your budget on the go: http://goo.gl/ePhKa
>>  Earnest: Self-employed? Track your business expenses and income.
>>  http://earnestapp.com
>>  Nearest Bus: find when the next bus is coming to your stop.
>> http://goo.gl/Vcz1p
>>  London Bike App: Find the nearest Boris Bike, and get riding!
>> http://goo.gl/Icp2
>>  _______________________________________________
>>  MonoTouch mailing list
>>  [email protected]
>>  http://lists.ximian.com/mailman/listinfo/monotouch



-- 
Nic Wise
t.  +44 7788 592 806 | @fastchicken | http://www.linkedin.com/in/nicwise
b. http://www.fastchicken.co.nz/

mobileAgent (for FreeAgent): get your accounts in your pocket.
http://goo.gl/IuBU
Trip Wallet: Keep track of your budget on the go: http://goo.gl/ePhKa
Earnest: Self-employed? Track your business expenses and income.
http://earnestapp.com
Nearest Bus: find when the next bus is coming to your stop.
http://goo.gl/Vcz1p
London Bike App: Find the nearest Boris Bike, and get riding!
http://goo.gl/Icp2
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch



_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to