У меня есть список элементов, и я проверяю, существует ли элемент в списке. Если он существует, я пытаюсь его найти.Найти объект, если он существует
Я думаю, что у этого есть немного накладных расходов, потому что я в настоящее время делаю два прохода над списком. Можно ли сделать за один проход?
В настоящее время у меня есть.
public partial class Item
{
public string text;
public int id;
}
....
static List<Item> data = new List<Item>();
static stub = new Item() { text = "NaN", id = -1 };
public static Item Get(int targetId)
{
if (data.Any(f => f.id == targetId) == false)
{
return stub;
}
return data.Find(f => f.id == targetId);
}
Я хочу что-то вроде
...
public static Item Get(int targetId)
{
Item result;
result = data.Find(f => f.id == targetId);
if (result == null)
{
return stub;
}
return result;
}
Это немного неясно, что именно вы просите, но кажется, что вы ищете 'FirstOrDefault()' я думаю. – CodeCaster
@CodeCaster Однако, если данные не уникальны, он может вернуть неверный. – Greg
Редактировать код, чтобы показать, что такое 'data'. Basic Find возвращает null, если ничего не может найти? –