-2

我正在涉足 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”运算符,但我找不到它的语法。请纠正我哪里错了。

4

1 回答 1

1

您只需要将您的替换Select为 a 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))。

于 2013-06-06T11:58:05.350 回答