2011-08-23 54 views

回答

4

大約

using System.Linq; 

class Person 
{ 
    public int Id; 
    public string Name; 
} 

class Address 
{ 
    public int Id; 
    public string Street; 
} 

class PersonAddress 
{ 
    public int PersonId, AddressId; 
} 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var personList = new [] 
     { 
      new Person { Id = 1, Name = "Pete" }, 
      new Person { Id = 2, Name = "Mary" }, 
      new Person { Id = 3, Name = "Joe" } 
     }; 

     var addressList = new [] 
     { 
      new Address { Id = 100, Street = "Home Lane" }, 
      new Address { Id = 101, Street = "Church Way" }, 
      new Address { Id = 102, Street = "Sandy Blvd" } 
     }; 

     var relations = new [] 
     { 
      new PersonAddress { PersonId = 1, AddressId = 101 }, 
      new PersonAddress { PersonId = 3, AddressId = 101 }, 

      new PersonAddress { PersonId = 2, AddressId = 102 }, 
      new PersonAddress { PersonId = 2, AddressId = 100 } 
     }; 

     var joined = 
        from par in relations 
        join p in personList 
         on par.PersonId equals p.Id 
        join a in addressList 
         on par.AddressId equals a.Id 
        select new { Person = p, Address = a }; 

     foreach (var record in joined) 
      System.Console.WriteLine("{0} lives on {1}", 
            record.Person.Name, 
            record.Address.Street); 
    } 
} 

輸出:

Pete lives on Church Way 
Mary lives on Sandy Blvd 
Mary lives on Home Lane 
Joe lives on Church Way 
+0

與處理的數據(可替代的方式更新了許多性能擴展能力更強,並且支持更新他們好了很多,取得了數據類非值類型因爲這個原因) – sehe

+0

非常感謝!現在我要弄清楚如何連接到DataSource,將數據綁定到列表視圖,並訪問aspx頁面 – Donnie

+0

中的屬性,您將「可以」始終在SQL Server中建立連接,並且當您生成DBML文件時,它將生成爲你加入。然後你可以通過Person.Address.Street訪問一個人的地址。上述方法是一種很好的解耦方法,EF Code First最有效。 –

相關問題