首页新闻找找看学习计划

C# LINQ语句查询

0
悬赏园豆:10 [已解决问题] 解决于 2018-12-06 17:50

一个List集合 SiemensShipmentWips里面有多个字段mawb,shipC、consC,RMB 四个字段。

需要根据字段mawb,shipC、consC 存在重复,并且RMB 小于5000金额的数据筛选出来。

请问使用LINQ语句如何编写查询条件?

久久婷婷的主页 久久婷婷 | 初学一级 | 园豆:52
提问于:2018-12-05 19:10
< >
分享
最佳答案
1

//先筛选出RMB<500的集合项,再进行字段重复筛选.
SiemensShipmentWips = SiemensShipmentWips.Where(x => x.RMB < 500);
var result = SiemensShipmentWips.Where(x=>
SiemensShipmentWips.Count(c=>c.mawb == x.mawb)>1 ||
SiemensShipmentWips.Count(c=>c.shipC == x.shipC)>1 ||
SiemensShipmentWips.Count(c=>c.consC == x.consC )>1 ||
);

收获园豆:5
潇潇@暮雨 | 菜鸟二级 |园豆:256 | 2018-12-06 13:41

使用此方法可行

久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 17:31

@久久婷婷: 用Group By呀,一句搞定

var Result = (from pl in SiemensShipmentWips
group pl by new { pl.mawb,pl.shipC,pl.consC }
into r
select new { mawb = r.Key.mawb,shipC=r.Key.shipC,consC=r.Key.consC,RMB = r.Where(c=>c.RMB<5000)}
).ToList();

Luckyfish小文 | 园豆:305 (菜鸟二级) | 2018-12-25 11:06
其他回答(4)
1

ssws.where(a=>(a.mawb==a.shipC||a.mawb==a.consC ||a.shipC==a.consC ||)&&a.rmb<5000)

收获园豆:3
吴瑞祥 | 园豆:28621 (高人七级) | 2018-12-05 21:29

你好!

是三个字段多条数据同一个字段存在重复的筛选呢~

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 09:24

@久久婷婷:
var 重复的bcc=ssw.groupby(a=>new{mawb,shipC、consC})
.where(a=>a.count()>1)
.select(a=>new{a.key.mawb,shipC,consC});
ssw.where(a=>重复的bcc.包含(b=>a.mawb==b.mawb&&a.shipC==b.shipC&&a.==b.&&a.rmb<5000)

支持(0) 反对(0) 吴瑞祥 | 园豆:28621 (高人七级) | 2018-12-06 13:08

@吴瑞祥: 谢谢大佬~

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 17:32
0

需要根据字段mawb,shipC、consC 存在重复 -----举个栗子

220✈ | 园豆:217 (菜鸟二级) | 2018-12-06 10:57

多条记录里边的数据字段mawb,shipC、consC。。 比如: 第一条数据的mawb,shipC、consC字段和第二条数据的mawb,shipC、consC字段数据内容相同就算存在重复的数据,把他筛选出来。

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 10:59

@久久婷婷: 应该是去除重复 取RMB 小于5000金额的数据是吧?

支持(0) 反对(0) 220✈ | 园豆:217 (菜鸟二级) | 2018-12-06 11:32

@BlueWhale`: 筛选出带重复的数据,如果是不重复的就不要。

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 11:48
0

 感觉你这个意思是list去重吧?

华临天下 | 园豆:1165 (小虾三级) | 2018-12-06 11:26

筛选匹配条件重复的数据,不重复的去掉~

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 17:42
0

class Program
{
static void Main(string[] args)
{
List<Student> list = new List<Student>();
list.Add(new Student {
a="1",
b="2",
c="3",
rmb=10000
});
list.Add(new Student
{
a = "1",
b = "2",
c = "3",
rmb = 3000
});
list.Add(new Student
{
a = "1",
b = "2",
c = "3",
rmb = 5000
});
list.Add(new Student
{
a = "1",
b = "3",
c = "3",
rmb = 10000
});
var result = list.Where(t1 => list.Any(t2 => t1.a == t2.a && t1.b == t2.b && t1.c == t2.c && t1.rmb <= 5000)).ToList();
Console.Read();
}
}
public class Student
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
public int rmb { get; set; }
}

试试。。。。。。。。。。

收获园豆:2
去海边生活 | 园豆:16 (初学一级) | 2018-12-06 11:31

谢谢大佬~试过了此方法,

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 17:41

@久久婷婷: 是你想要的结果吗 如果我没理解错你的需求的话

支持(0) 反对(0) 去海边生活 | 园豆:16 (初学一级) | 2018-12-06 17:43

@去海边生活: 好像不是喔,没有查询出来数据。

支持(0) 反对(0) 久久婷婷 | 园豆:52 (初学一级) | 2018-12-06 17:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册