C# 我可以在列表中搜索特定值吗<;T>;?

C# 我可以在列表中搜索特定值吗<;T>;?,c#,list,generics,C#,List,Generics,我有一个清单 自定义类包含两个成员,它们一起构成一个伪复合键 我希望能够多次写入自定义类的每个实例(“逐步填充”--一点为两个成员赋值,然后在稍后的点为多个成员赋值,等等) 将数据保存到此列表时,我希望能够找到我将要部分填充的特定实例(如果该实例已被实例化) 例如,假设“伪复合密钥”是: 我想搜索一下,看看是否已经有一个自定义类的实例具有这些值,如果有的话,就使用它;否则,创建该类的新实例以添加到列表 有没有办法找到自定义类的特定实例,这样我就可以将成员分配给该实例尚未分配的成员 我需要这样做的

我有一个清单

自定义类包含两个成员,它们一起构成一个伪复合键

我希望能够多次写入自定义类的每个实例(“逐步填充”--一点为两个成员赋值,然后在稍后的点为多个成员赋值,等等)

将数据保存到此列表
时,我希望能够找到我将要部分填充的特定实例(如果该实例已被实例化)

例如,假设“伪复合密钥”是:

我想搜索一下,看看是否已经有一个自定义类的实例具有这些值,如果有的话,就使用它;否则,创建该类的新实例以添加到列表

有没有办法找到自定义类的特定实例,这样我就可以将成员分配给该实例尚未分配的成员


我需要这样做的原因是,在保存值时(在它们“消失”之前),如果不是所有自定义类实例的话,很多自定义类实例的一些但可能不是所有的值都是已知的;下次进行保存时,这些相同类实例的其他部分是已知的,必须添加到现有类实例中;等等。

如果没有找到匹配项,请使用
FirstOrDefault
。您可以使用其中一种。我通常更喜欢使用try/catch而不是FirstOrDefault,然后将结果与默认值进行比较。如果First失败,“obj”是否为null?@ClayShannon:在我的示例中,否。如果First失败,它会抛出异常。但是,如果将
First
替换为
FirstOrDefault
,则它不会引发异常,并将返回null。如果没有找到匹配项,请使用
FirstOrDefault
。您可以使用其中一种。我通常更喜欢使用try/catch而不是FirstOrDefault,然后将结果与默认值进行比较。如果First失败,“obj”是否为null?@ClayShannon:在我的示例中,否。如果First失败,它会抛出异常。但是,如果将
First
替换为
FirstOrDefault
,则它不会引发异常,并将返回null。
myList.Where(x => x.Member1 == "a" && x.Member2 == "42");
myList.Where(x => x.Member1 == "a" && x.Member2 == "42");
try {   
    var obj = list.First(x => x.Property1 == "1" && x.Property2 == "a");
} catch {
    // Not found
}