10. december 2012 - 23:08
Der er
6 kommentarer og
1 løsning
Eksempel med joins vha. lamda udtryk
Jeg har brug for et eksempel, hvor der joines mellem 4 tabeller:
TabelA <--> TabelB <--> TabelC <--> TabelD
Der er en betingelse i TabelA og en betingelse i TabelD, og i TabelB og TabelC, vil jeg gerne trække data ud.
Er der en der kan vise mig et eksempel på det?
11. december 2012 - 01:50
#2
Til inspiration:
using System;
using System.Collections.Generic;
using System.Linq;
namespace E
{
public class A
{
public int AID { get; set; }
public string AS { get; set; }
public int BID { get; set; }
public int CID { get; set; }
}
public class B
{
public int BID { get; set; }
public string BS { get; set; }
}
public class C
{
public int CID { get; set; }
public string CS { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
List<B> b = new List<B> { new B { BID=1, BS="B1" }, new B { BID=2, BS="B2" } };
List<C> c = new List<C> { new C { CID=1, CS="C1" }, new C { CID=2, CS="C2" } };
List<A> a = new List<A> { new A { AID=1, AS="A1", BID=1, CID=2 }, new A { AID=2, AS="A2", BID=2, CID=1 } };
var q1 = a.Join(b, arow => arow.BID, brow => brow.BID, (arow,brow) => new { AS=arow.AS, CID=arow.CID, BS=brow.BS }).Join(c, abrow => abrow.CID, crow => crow.CID, (abrow,crow) => new { AS=abrow.AS, BS=abrow.BS, CS=crow.CS });
foreach (var row in q1)
{
Console.WriteLine("{0} {1} {2}", row.AS, row.BS, row.CS);
}
var q2 = from arow in a join brow in b on arow.BID equals brow.BID join crow in c on arow.CID equals crow.CID select new { AS=arow.AS, BS=brow.BS, CS=crow.CS };
foreach (var row in q2)
{
Console.WriteLine("{0} {1} {2}", row.AS, row.BS, row.CS);
}
Console.ReadKey();
}
}
}
11. december 2012 - 01:57
#3
Og her med en ordentlig objekt model:
using System;
using System.Collections.Generic;
using System.Linq;
namespace E
{
public class A
{
public int AID { get; set; }
public string AS { get; set; }
public List<B> B { get; set; }
public List<C> C { get; set; }
}
public class B
{
public int BID { get; set; }
public string BS { get; set; }
}
public class C
{
public int CID { get; set; }
public string CS { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
List<A> alst = new List<A> { new A { AID=1, AS="A1", B=new List<B> { new B { BID=1, BS="B1" } }, C=new List<C> { new C { CID=2, CS="C2" } } },
new A { AID=2, AS="A2", B=new List<B> { new B { BID=2, BS="B2" } }, C=new List<C> { new C { CID=1, CS="C1" } } } };
foreach (A a in alst)
{
Console.WriteLine("{0} {1} {2}", a.AS, a.B[0].BS, a.C[0].CS);
}
Console.ReadKey();
}
}
}