辞書のコレクションがあります。
public class Bills
{
public Dictionary<string, string> billList { get; set; }
}
このクラス「Bill」のインスタンスのリストから、List<Bills> allBills
keyが「User」に等しく、nameが「Nick」に等しいすべてのレコードを取得するにはどうすればよいですか。
他の答えはどれも辞書の検索速度を利用していません:
var matches = allBills
.Where(dict => dict.billList.ContainsKey("User"))
.Where(dict => dict.billList["User"] == "Nick");
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
ます。