Calculating
index
using
index++
.
int index = 0;
words = new ObservableCollection<LookupItem>(
from word in "Hello world from LINQ".Split(" ".ToCharArray())
select new LookupItem { Caption = word, Index = index++ }));
The same using built-in LINQ functionality.
words = new ObservableCollection<LookupItem>(
"Hello world from LINQ".Split(" ".ToCharArray()).
Select((word, index) => new LookupItem { Caption = word, Index = index }));
Other useful LINQ functions having second form with index are
TakeWhile
,
SkipWhile
and
Where
.
words = new ObservableCollection<LookupItem>(
"Hello world from LINQ".Split(" ".ToCharArray()).
Where((word, index) => index < 100).
Select((word, index) => new LookupItem { Caption = word, Index = index }));
Michael is a software developer who still remembers punch cards, computers with 4 Kbytes RAM, and 3270s. His personal computers were Apple IIe, Commodore, and PC XT (with the whole 640 Kbytes RAM and 2 floppy drives!!!). Wow, that was a powerhouse.
Fast forward 32 years through FORTRAN, PL-I, Algol, Pascal, Prolog, LISP, C, Basic, Clipper, Assembly, FoxPro, DHTML, JavaScript, C++, you name it, to C# 4.0.
Of course, real men use machine code to write software, but what a difference a few years make! No more mallocs and callocs, GC magically collects unused objects, dynamic objects magically call IUnknown::QueryInterface, Reflection magically gives you metadata and even generates help files, WPF magically binds stuff together...
Read some of Michael's articles here.
BindingHub (a WPF component and a design pattern) [
^].
Notifying parent of changes to children's properties [
^].
Point-In-Time database (coming soon)
Composite Menus and other ItemsControls (coming soon)
Adorners framework (coming soon)
Drag-n-drop data transfer framework (coming soon)
Converters and MarkupExtensions (coming soon)
Download complete WPF library [
^].