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.Dialog/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.Dialog/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

Reply via email to