私は左をperfomしようとしていますLinqを使用して左外部結合を実行している間に不正確な結果を得る理由 - なぜですか?
public class Person
{
// Properties
public string Name { get; set; }
public string Area { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public List<Person> GetPersonData()
{
List<Person> personLst = new List<Person> {
new Person { Name="Shashidhar Niketani", Age=20, Gender="Male" , Area = "Assam"},
new Person { Name="Ahmed Ali Khan", Age=25 ,Gender="Male", Area = "Assam" },
new Person { Name="S. Mirja", Age=20, Gender="Female", Area = "Assam"},
new Person { Name="Neru Kumar", Age=18, Gender="Female", Area = "Colombo"},
new Person { Name="Chidam P", Age=19, Gender="Male", Area = "Colombo"},
new Person { Name="H Kontala", Age=19, Gender="Male", Area = "Bombay"},
new Person { Name="Priya Pankhraj", Age=23, Gender="Female", Area = "North Punjab"},
new Person { Name="Ambla", Age=20, Gender="Female", Area = "Madras"},
new Person { Name="H Kontala", Age=25, Gender="Male", Area = "Bombay"},
new Person { Name="Sirisha Chalukuri", Age=30, Gender="Female", Area = "Bombay"}};
return personLst;
}
public override string ToString()
{
return string.Format("Patient Name: = {0} , Age:= {1}, Gender:= {2}, Area: = {3}", Name, Age, Gender, Area);
}
}
public class Hobbies
{
public string Owner { get; set; }
public string HobbyName { get; set; }
public List<Hobbies> GetHobbies()
{
List<Hobbies> hobbyList = new List<Hobbies> {
new Hobbies { Owner="Sirisha Chalukuri", HobbyName = "Singing"},
new Hobbies { Owner="Priya Pankhraj", HobbyName = "Cooking" },
new Hobbies { Owner="S. Mirja", HobbyName="Playing"},
new Hobbies { Owner="Neru Kumar", HobbyName="Programing"}};
return hobbyList;
}
}
の下
//参加
var res8 = (from person in personSource
join hobby in hobbySource
on p.Name equals hobby.Owner into temp
from hobby in temp.DefaultIfEmpty()
select new
{
PersonName = p.Name,
PersonAge = p.Age,
Gender = p.Gender,
LivesIn = p.Area,
Hobby = (hobby == null) ? "N/A" : hobby.HobbyName
});
しかし、それらのレコードに
Person p = new Person();
var personSource = p.GetPersonData();
Hobbies h = new Hobbies();
var hobbySource = h.GetHobbies();
//左外側をフェッチ
に参加してい私は正しい結果を得ることができません...すべてのレコードはnull/nとして来ています一致するレコードには少なくとも4つの一致するレコードがあり、残りのレコードには一致しないレコードがあります。私は、これらの2つのデータソースを使用して、 PersonNameとHobbyOwnerについて
ヘルプはあなたの選択の投影でhobby.HobbyNameを参照すると、人(DefaultIfEmpty空の趣味のコレクションのためにnullを返します)に該当趣味がない場合、趣味がnull
あなたのpは何を表していますか? – Turbot