以下に定義されているCustomTypeのオブジェクトのリストがあります。すなわちList<CustomType>
辞書の照合タイプに基づくオブジェクトリストとC#コレクションを使用する別のリスト
public class CustomType
{
public int Id {get;set;}
public string Value {get;set;}
public bool IsCorrect {get; set;}
}
今私はCustomTypeのIdをフィールドに一致するいくつかのキーが含まれているDictionary<int, String>
を持っています。
値辞書と同じ値を含む別のList<string>
があります。
今私は辞書値にList<CustomType>
ためList<string>
値が一致してエントリをIsCorrect =真を更新したいと辞書にキー対応はCustomTypeの同上にマッチします。私は、最初の場所で
を次のことを試してみました
、私のような
var commonKeys = list
.Where(k => dictionaty.ContainsValue(k))
.Select(k => dictionary)
.Select(m => m.Keys);
以下のリストと辞書の交差を取得しようとしました今、共通のキーは、値の一致に基づいて、共通鍵が含まれています辞書は、今、私はと commonKeys に同上CustomTypeの一致キーの一致に基づいて、一覧を更新する必要があります。 HashSet<string>
で - ギラッドの答えの
Dictionary<int,string> ids;
List<string> values
List<CustomType> customTypes;
foreach(var customType in customTypes.Where(item => ids.ContainsKey(item.Id) &&
values.Contains(ids[item.Id])))
{
customType.IsCorrect = true;
}
これは、データベースまたはメモリで実行されます -
HashSet.Contains
方法では、検索が早くDictionary
のためのキーとなるのでしょうか? –この操作はメモリ内で実行する必要があります。私は質問を更新します、私が試したこと –
私は他の 'List'の目的を理解していません。 –