Поиск, если значение существует в списке использования объектов Linq

Если вы расширяете класс Application и поддерживаете статический «глобальный» объект Context, как показано ниже, вы можете использовать его вместо действия для загрузки ресурса String.

public class MyApplication extends Application {
    public static Context GLOBAL_APP_CONTEXT;

    @Override
    public void onCreate() {
        super.onCreate();
        GLOBAL_APP_CONTEXT = this;
    }
}

Если вы используете это, вы можете обойтись без Toast и загрузки ресурсов, не беспокоясь о жизненных циклах.

217
задан Tony_Henrich 1 July 2009 в 08:58
поделиться

7 ответов

LINQ определяет метод расширения, который идеально подходит для решения именно этой проблемы:

using System.Linq;
...
    bool has = list.Any(cus => cus.FirstName == "John");

убедитесь, что вы ссылаетесь на System.Core.dll, это то место, где находится LINQ.

437
ответ дан 23 November 2019 в 04:14
поделиться

Используя Linq, у вас есть много возможностей, здесь одна без использования лямбда-выражений:

//assuming list is a List<Customer> or something queryable...
var hasJohn = (from customer in list
         where customer.FirstName == "John"
         select customer).Any();
10
ответ дан 23 November 2019 в 04:14
поделиться

zvolkov's answer is the perfect one to find out if there is such a customer. If you need to use the customer afterwards, you can do:

Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
    // Use customer
}

I know this isn't what you were asking, but I thought I'd pre-empt a follow-on question :) (Of course, this only finds the first such customer... to find all of them, just use a normal where clause.)

100
ответ дан 23 November 2019 в 04:14
поделиться
List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");

john will be null if no customer exists with a first name of "John".

3
ответ дан 23 November 2019 в 04:14
поделиться
customerList.Any(x=>x.Firstname == "John")
5
ответ дан 23 November 2019 в 04:14
поделиться

Другая возможность

if (list.Count(customer => customer.Firstname == "John") > 0) {
 //bla
}
1
ответ дан 23 November 2019 в 04:14
поделиться

Один из вариантов ответа на следующий вопрос (как найти клиента, у которого может быть любое количество имен):

List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));

или получить клиента из CSV аналогичного списка

string input = "John,Max,Pete";
List<string> names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
23
ответ дан 23 November 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: