如何在linq中创建具有多个条件的orselect [英] how to create orselect with multi condition in linq
本文介绍了如何在linq中创建具有多个条件的orselect的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨
我想要选择数据女巫,例如sensor =sen或Area =aa
i写下这段代码:
Hi
I want select data witch for example sensor="sen" or Area="aa"
i write this code:
var listsegment2 = from ls1 in SMDB.SegmentInfos
where (ls1.Area == area || string.IsNullOrEmpty(area)) && (ls1.Sensor == sen||string.IsNullOrEmpty(sen)) && (ls1.System == sys || string.IsNullOrEmpty(sys)) && (ls1.Jbo == jbo || string.IsNullOrEmpty(jbo))
select new
{}
但此代码返回和条件结果
help我要更正代码,请
but this code return andconditions result
help me to correct code,please
推荐答案
如果我正确理解了这个问题,你已经使用了&&你应该在哪里使用||
所以这样的事情:
If I understood the question correctly, you have used && where you should've used ||
So something like this:
var listsegment2 = from ls1 in SMDB.SegmentInfos
where ( (ls1.Area == area || string.IsNullOrEmpty(area))
|| (ls1.Sensor == sen || string.IsNullOrEmpty(sen))
)
&& (ls1.System == sys || string.IsNullOrEmpty(sys))
&& (ls1.Jbo == jbo || string.IsNullOrEmpty(jbo))
select new
{}
如果传感器和区域可以是sen或aa ,然后只需使用OR =||
string.Equals是比较字符串的好方法。
If Sensor and Area can be "sen" or "aa", then just use OR = "||"
string.Equals is a great method to compare strings.
string sensor = "sen";
string area = "aa";
string system = "sys";
var listSegment2 = from ls1 in SMDB.SegmentInfos
where string.Equals(ls1.Area, area, StringComparison.InvariantCultureIgnoreCase)
|| string.Equals(ls1.Sensor, sen, StringComparison.InvariantCultureIgnoreCase)
|| string.Equals(ls1.System, system, StringComparison.InvariantCultureIgnoreCase)
select ls1;
foreach (var segment in listSegment2)
{
Console.WriteLine("Segment - Area:" + segment.Area + ", Sensor:" + segment.Sensor);
}
这篇关于如何在linq中创建具有多个条件的orselect的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文