-9

辞書のコレクションがあります。

public class Bills
    {
        public Dictionary<string, string> billList { get; set; }
    }

このクラス「Bill」のインスタンスのリストから、List<Bills> allBillskeyが「User」に等しく、nameが「Nick」に等しいすべてのレコードを取得するにはどうすればよいですか。

4

2 に答える 2

4

他の答えはどれも辞書の検索速度を利用していません:

var matches = allBills
        .Where(dict => dict.billList.ContainsKey("User"))
        .Where(dict => dict.billList["User"] == "Nick");
于 2013-03-27T10:53:31.083 に答える
1
string key = "User";
string name = "Bill";

if (billList.ContainsKey(key))
{
    string result = billList[key];
    if (result == name)
        return result;
}
return null; // key and names did not match

辞書に同じキーが複数出現することは決してないので、代わりに使用するべきではないかと思います。Dictionary<string, Bill>その場合、コードは次のようになります。

return billList.Where(kvPair => kvPair.Value.Key == key &&
                                kvPair.Value.Name == name).Select(kvPair => kvPair.Value);

Billこのコードは、クラスにKeyとフィールドが含まれていることを前提としていNameます。

于 2013-03-27T10:58:09.037 に答える