我試圖讓這個左外連接工作,但我似乎遇到了一些問題。我已經拿到了MSDN left join article的示例代碼。這個例子是在LINQ語法中的,但是我希望我的擴展方法語法,所以我也引用了這個SO問題。左外連接錯誤
Person magnus = new Person { FirstName = "Magnus", LastName = "Hedlund" };
Person terry = new Person { FirstName = "Terry", LastName = "Adams" };
Person charlotte = new Person { FirstName = "Charlotte", LastName = "Weiss" };
Person arlene = new Person { FirstName = "Arlene", LastName = "Huff" };
Pet barley = new Pet { Name = "Barley", Owner = terry };
Pet boots = new Pet { Name = "Boots", Owner = terry };
Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
Pet bluemoon = new Pet { Name = "Blue Moon", Owner = terry };
Pet daisy = new Pet { Name = "Daisy", Owner = magnus };
// Create two lists.
List<Person> people = new List<Person> { magnus, terry, charlotte, arlene };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };
var query = people
.GroupJoin(pets,
p1 => p1.FirstName,
p2 => p2.Owner.FirstName,
(p1, p2) => new {p1,p2})
.SelectMany(x => x.p2.DefaultIfEmpty(),
(x, y) => new { FirstName = x.p1.FirstName, PetName = y.Name });
foreach (var v in query)
{
Console.WriteLine("{0,-15}{1}", v.FirstName + ":", v.PetName);
}
我的查詢基本上等同於我所引用的代碼,但我得到這個錯誤:
NullReferenceException
Object reference not set to an instance of an object.
這應該是非常簡單的。我究竟做錯了什麼?
查詢語法更易於閱讀。但是要回答你的問題,在你訪問對象中的一個屬性(從左連接)之前,你必須檢查它是否爲null。 (當使用Linq2Sql時,這是不需要的) – Magnus 2013-04-03 20:40:24