求一linq语句,关于集合join的

88480 2009-11-16 11:36:57
class product
{
public string name{get;set;}
public string price{get;set;}
}

List<product> p1 = new List<product>()
{
new product(){name="p1",price="100"},
new product(){name="p11",price="102"},
new product(){name="p111",price="103"}
};

List<product> p2 = new List<product>()
{
new product(){name="p1",price="200"},
new product(){name="p22",price="201"},
new product(){name="p222",price="222"}
};

想得到结果:
product:
p1,200
p1,100
====
也就是name相同的所有结果
...全文
188 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2009-11-16
  • 打赏
  • 举报
回复

var temp = p1.Union(p2);
var result = from pr1 in temp from pr2 in temp where pr1.name == pr2.name && pr1 != pr2 select pr1;
foreach (var r in result)
Console.WriteLine(r.name + "," + r.price);

88480 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
var p = from t1 in a
        from t2 in b
        where t1.name equal t2.name
        select new
        {
          t2.name
        }
http://topic.csdn.net/u/20091108/00/ce4dd3fe-8498-419a-87d3-f9bc80644578.html

[/Quote]

你这个不符合要求:

想得到结果:
product:
p1,200
p1,100

88480 2009-11-16
  • 打赏
  • 举报
回复
其实我知道怎么写,还想看看有没有更好的方法
Error_Code 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
var p = from t1 in a
        from t2 in b
        where t1.name equal t2.name
        select new
        {
          t2.name
        }
[/Quote]
这样t1 没有select出来呢
wuyq11 2009-11-16
  • 打赏
  • 举报
回复
var p = from t1 in a
from t2 in b
where t1.name equal t2.name
select new
{
t2.name
}
http://topic.csdn.net/u/20091108/00/ce4dd3fe-8498-419a-87d3-f9bc80644578.html
liaoyukun111 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ojlovecd 的回复:]
C# codevar temp= p1.Union(p2);var result=from pr1in tempfrom pr2in tempwhere pr1.name== pr2.name&& pr1!= pr2select pr1;foreach (var rin result)
Console.WriteLine(r.name+","+ r.price);
[/Quote]
这个第一句,和你的差不多
88480 2009-11-16
  • 打赏
  • 举报
回复
List<product> ps = new List<product>();
ps.AddRange(p1);
ps.AddRange(p2);
var q = from p in ps
group p by p.name into g
where g.Count() == 2
select g;
这个是我的方案
wuyq11 2009-11-16
  • 打赏
  • 举报
回复
var result = (from p in p1
join g in p2 on p.name equal g.name
select new { p1.name,p1.price })
Concat
(from p in p2
join g in p1 on p.name equal g.name
select new { p1.name,p1.price })

foreach (var p in result)
{
Console.WriteLine(p.name + "," + p.price);
}

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧