从BindingList <keyvaluepair <string,string =“”>中选择KeyValuePairs列表,其中键或值与某些比较标准匹配</keyvaluepair <string,>

时间:2013-06-06 11:55:41

标签: c# linq lambda

我正在使用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纠正我的错误。

1 个答案:

答案 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)中执行的操作)。