LINQ og Lister
Eksempel 1
Vi lager oss en enkel console applikasjon og gjør noen eksperimenter på en array av heltall:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace linq5
{
class Program
{
static void Main(string[] args)
{
int[] T={12,45,2,9,0,-3,-5,7,8};
var positive = from value in T
where value > 0
select value;
show("positive",positive);
var sorterte=from value in T
orderby value
select value;
show("sorterte",sorterte);
var even = from value in T
where value % 2 == 0
select value;
show("even",even);
Console.Read();
}
public static void show(String what,IEnumerable<int> tall)
{
String S = what+" : ";
foreach (int i in tall)
S += i + ",";
Console.WriteLine(S.Substring(0,S.Length-1));
}
}
}
Eksempel 2
I dette eksempelet etablerer vi en liste, List <person> pList, av objekter og eksperimenterer med den. Objektene vi bruker ser slik ut:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace linq4
{
class person
{
String m_name;
String m_address;
int m_yob;
public person(String t)
{
String[] data = t.Split(',');
m_name = data[0];
m_address = data[1];
m_yob = Convert.ToInt32(data[2]);
}
public string Name
{
get { return m_name; }
set { m_name = value; }
}
public string Address
{
get { return m_address; }
set { m_address = value; }
}
public int Year
{
get { return m_yob; }
set { m_yob = value; }
}
override public String ToString()
{
return m_name + ":" + m_address[0] + ":" + m_yob;
}
}
}
og de etableres fra en enkel text ressurs data.txt, slik:
private void loadData()
{
pList = new List<person>();
String[] slist = Properties.Resources.data.Split('\n');
foreach(String t in slist)
if((t.Length <2)||(t.StartsWith("//")))
continue;
else
pList.Add(new person(t));
listBox1.Items.Clear();
foreach (person p in pList)
listBox1.Items.Add(p);
}
Når dette er gjort kan vi gå løs på lista med personer, pList, med linq. Her er to eksempler som fyller to listebokser med henholdsvis haldensere og sorterte mossinger:
// From Halden
private void button1_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();
var haldensere = from p in pList
where p.Address.CompareTo("Halden")==0
select p;
foreach (var p in haldensere)
listBox2.Items.Add(p);
}
// from Moss, sorted
private void button2_Click(object sender, EventArgs e)
{
listBox3.Items.Clear();
var mossinger = from p in pList
where p.Address.CompareTo("Moss") == 0
orderby p.Name
select p;
foreach (var p in mossinger)
listBox3.Items.Add(p);
}