Прямо сейчас у меня есть следующий код:
List<MyType> objectList = MyType.GetList();
MyType objectInstance = new MyType();
if (objectList.Exists(o => o.MyProperty == "SomeValue"))
{
objectInstance = objectList.First(o => o.MyProperty == "SomeValue"));
DoStuff();
}
else if (objectList.Exists(o => o.MyProperty == "SomeOtherValue"))
{
objectInstance = objectList.First(o => o.MyProperty == "SomeOtherValue"));
DoStuff();
}
Есть ли какой-нибудь способ избежать первой проверки Exists, а затем присвоения?
Я знаю, чтоВместо этого я могу использовать FirstOrDefault следующим образом:
List<MyType> objectList = MyType.GetList();
MyType objectInstance = new MyType();
objectInstance = objectList.FirstOrDefault(o => o.MyProperty == "SomeValue"));
if (objectInstance != null)
DoStuff();
else
{
objectInstance = objectList.FirstOrDefault(o => o.MyProperty == "SomeValue"));
if (objectInstance != null)
DoStuff();
}
Но на самом деле это не кажется более эффективным.
Мне бы хотелось иметь поведение, подобноеTryParse ().Я знаю, что мог бы написать свою собственную обертку для этого, что я сделаю, если нет встроенного способа сделать это, но решил, что я просто проверю и посмотрю, прежде чем я это сделаю.По сути, я бы хотел:
List<MyType> objectList = MyType.GetList();
MyType objectInstance = new MyType();
if (objectList.TryFirst(o => o.MyProperty == "SomeValue", out objectInstance))
DoStuff();
else if (objectList.TryFirst(o => o.MyProperty == "SomeOtherValue", out objectInstance))
DoStuff();