【发布时间】:2015-01-16 07:47:13
【问题描述】:
在编写 LINQ 查询时,我无法找到使用 into 关键字的查询输出为何如此之类的原因。请检查一下代码并解决我的问题。
class Person_1
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
class Pet
{
public string Name { get; set; }
public string Owner { get; set; }
}
static void GroupJoinMethod()
{
Person_1 magnus = new Person_1 { LastName = "Hedlund",FirstName = "Magnus" };
Person_1 terry = new Person_1 {LastName = "Adams", FirstName = "Terry" };
Person_1 charlotte = new Person_1 { LastName = "Weiss", FirstName = "Charlotte" };
Person_1 arlene = new Person_1 {LastName = "Huff", FirstName = "Arlene" };
Person_1 dummy = new Person_1 { LastName = "Williams", FirstName = "Magnus" };
Pet barley = new Pet { Name = "Barley",Owner="Terry"};//, Owner = terry };
Pet boots = new Pet { Name = "Boots",Owner="Terry"};//, Owner = terry };
Pet whiskers = new Pet { Name = "Whiskers",Owner="Charlotte"};//, Owner = charlotte };
Pet bluemoon = new Pet { Name = "Blue Moon",Owner="Terry"};//, Owner = terry };
Pet daisy = new Pet { Name = "Daisy",Owner="Magnus"};//, Owner = magnus };
List<Person_1> peoples = new List<Person_1> { magnus, terry, charlotte, arlene,dummy };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };
Console.WriteLine("\n\nVia Select into\n\n");
var result2 = from people in peoples
join pet in pets
on people.LastName equals pet.Owner
into gj
select new { people.FirstName };
foreach (var str in result2)
{
Console.WriteLine(str.FirstName);
}
}
输出:
Via Select into
Magnus
Terry
Charlotte
Arlene
Magnus
为什么当我的加入条件不正确时输出会出现。当我删除时没有输出。 in this.into关键字有什么影响。请帮忙
【问题讨论】:
-
使用
into关键字的联接称为GroupJoin。见:msdn.microsoft.com/en-us/library/bb311040.aspx -
你似乎没有使用分组变量
gj -
你穿过人。您尝试按宠物对它们进行分组,但最终您抓住了 people.FirstName。正在使用的分组不是
-
查看副本。简而言之:
into的输出不是“不正确”,即正确,因为它是某种外连接。 -
非常感谢您提供的链接 Soner Sir ......现在我明白为什么我不能在创建匿名类型时使用 pet.Owner ......