我正在使用LINQ(并使用lambdas)..
我有:
BindingList<KeyValuePair<string, string> bList = new BindingList<KeyValuePair<string, string>>();
string keyX = sometext1;
string valueX = sometext2;
我需要找到bList中的条目,其中的键与keyX相同;或者与valueX相同的值。
我试过这样的事情......
bList.Select(xy => {string.Compare(xy.Key, keyX, true) == 0 || string.Compare(xy.Value, valueX, true)}).ToList()
我很确定,我必须使用某种“where”运算符,但我无法找到它的语法.Plz纠正我的错误。
答案 0 :(得分:1)
您只需将Select
替换为Where
(并对您的lambda表达式进行一些其他微调):
bList.Where(xy => string.Compare(xy.Key, keyX, true) == 0 ||
string.Compare(xy.Value, valueX, true) == 0)
.ToList()
如果您使用String.Equals
而不是String.Compare
来执行相等比较,那么您的代码会更有效。
bList.Where(xy => string.Equals(xy.Key, keyX, StringComparison.CurrentCultureIgnoreCase) ||
string.Equals(xy.Value, valueX, StringComparison.CurrentCultureIgnoreCase))
.ToList()
CurrentCultureIgnoreCase
指定不区分大小写的比较(类似于string.Compare(s1, s2, true)
中执行的操作)。