-2

私はLINQに手を出しています(そしてラムダを使用しています)..

私は持っている:

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

string keyX = sometext1;
string valueX = sometext2;

keyX と同じキーを持つ bList のエントリを見つける必要があります。または valueX と同じ値。

私はこのようなことを試みました..

bList.Select(xy => {string.Compare(xy.Key, keyX, true) == 0 || string.Compare(xy.Value, valueX, true)}).ToList()

確かに、ある種の「where」演算子を使用する必要がありますが、その構文が見つかりませんでした.間違っているところを修正してください。

4

1 に答える 1

1

Selectyourを aに置き換えるだけですWhere(そして、ラムダ式にその他の小さな調整を加えます)。

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 に答える