3
我試圖組合3個對象列表。我有一個人名單,地址列表和地址關聯列表。 我想將這些列表合併到由person.id排序的新列表中,將其用作listview的數據源,然後能夠訪問aspx頁面中的屬性。如何通過主鍵使用linq將三個對象列表組合起來
這可能嗎?
我試圖組合3個對象列表。我有一個人名單,地址列表和地址關聯列表。 我想將這些列表合併到由person.id排序的新列表中,將其用作listview的數據源,然後能夠訪問aspx頁面中的屬性。如何通過主鍵使用linq將三個對象列表組合起來
這可能嗎?
大約
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
與處理的數據(可替代的方式更新了許多性能擴展能力更強,並且支持更新他們好了很多,取得了數據類非值類型因爲這個原因) – sehe
非常感謝!現在我要弄清楚如何連接到DataSource,將數據綁定到列表視圖,並訪問aspx頁面 – Donnie
中的屬性,您將「可以」始終在SQL Server中建立連接,並且當您生成DBML文件時,它將生成爲你加入。然後你可以通過Person.Address.Street訪問一個人的地址。上述方法是一種很好的解耦方法,EF Code First最有效。 –