我目前正在努力在我的对象集合上组装一个 LINQ 查询:Persons, Cars
每个人可以拥有多辆汽车。
我想选择人员中的所有人员,并选择此人拥有的所有汽车。到目前为止我写的查询是:
from c in persons,d in cars
where c.id = d.ownerID
group by c.Firstname into MG = tolist()
但它只返回有车的人。如果一个人没有车,他不在列表中。我无法弥补正确的逻辑。
我目前正在努力在我的对象集合上组装一个 LINQ 查询:Persons, Cars
每个人可以拥有多辆汽车。
我想选择人员中的所有人员,并选择此人拥有的所有汽车。到目前为止我写的查询是:
from c in persons,d in cars
where c.id = d.ownerID
group by c.Firstname into MG = tolist()
但它只返回有车的人。如果一个人没有车,他不在列表中。我无法弥补正确的逻辑。
尝试:
List<person> plist = new List<person>();
plist.Add(new person(1, "a"));
plist.Add(new person(2, "b"));
plist.Add(new person(3, "c"));
plist.Add(new person(4, "d"));
List<cars> clist = new List<cars>();
clist.Add(new cars(1, "c1"));
clist.Add(new cars(1, "c2"));
clist.Add(new cars(1, "c5"));
clist.Add(new cars(2, "c1"));
clist.Add(new cars(3, "c1"));
clist.Add(new cars(3, "c5"));
clist.Add(new cars(3, "c3"));
clist.Add(new cars(3, "c2"));
clist.Add(new cars(4, "c2"));
clist.Add(new cars(4, "c5"));
var result = from p in plist
join c in clist on p.id equals c.ownerID into k
from s in k.DefaultIfEmpty()
select new { p.firstName , carName = (s == null ? String.Empty :s.name)};
string sss = "";
foreach (var v in result)
{
sss+= ( v.firstName + " : " + v.carName + " >> "+"\n");
}
textBox1.Text = sss;
和类是:
class person
{
public int id;
public string firstName;
public person(int id1, string name)
{
id = id1;
firstName = name;
}
}
class cars
{
public int ownerID;
public string name;
public cars(int id,string name1)
{
ownerID = id;
name = name1;
}
}