C# 从BindingList

C# 从BindingList,c#,linq,lambda,C#,Linq,Lambda,我正在尝试LINQ和lambdas 我有: BindingList<KeyValuePair<string, string> bList = new BindingList<KeyValuePair<string, string>>(); string keyX = sometext1; string valueX = sometext2; 我很确定,我必须使用某种where操作符,但我找不到它的语法。。请纠正我的错误。您只需将Select替换为wh

我正在尝试LINQ和lambdas

我有:

BindingList<KeyValuePair<string, string> bList = new BindingList<KeyValuePair<string, string>>();

string keyX = sometext1;
string valueX = sometext2;

我很确定,我必须使用某种where操作符,但我找不到它的语法。。请纠正我的错误。

您只需将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.Compares1,s2,true中执行的比较。

只需切换您的选择,其中文字本身就是,不要忘记第二个==0,它看起来应该可以工作。好,walther我知道LINQ扩展了C语法和功能以包含where操作符。只是不知道在哪里用,或者怎么用。我不认为它是复制品。好吧,如果你这么说。。谢谢罗琳和道格拉斯。@user1079159所以你应该读一些关于LinQ@Rawling你说得对。它还有一对多余的花括号,大概是为了匹配Select推断的类型。
bList.Where(xy => string.Equals(xy.Key, keyX, StringComparison.CurrentCultureIgnoreCase) || 
                  string.Equals(xy.Value, valueX, StringComparison.CurrentCultureIgnoreCase))
     .ToList()