#c# #linq #lambda #ienumerable #iqueryable
#c# #linq #лямбда #ienumerable #iqueryable
Вопрос:
Может ли следующий цикл быть реализован с использованием IQueryable, IEnumerable или лямбда-выражений с linq
private bool functionName(int r, int c)
{
foreach (S s in sList)
{
if (s.L.R == r amp;amp; s.L.C == c)
{
return true;
}
}
return false;
}
если да, то как?
Комментарии:
1. Вопрос не имеет смысла и слишком открытый. Пожалуйста, прочитайте tinyurl.com/so-hints и пересмотрите свой вопрос.
2. Самое интересное, что даже с этими неполными домашними заданиями мы отвечаем, чтобы заработать немного репутации 🙂 Система работает слишком хорошо!
3. @Philippe И ты помогаешь таким людям, как я, которые не слишком знакомы с лямбдами. Я просто не знал о .any
Ответ №1:
Попробуйте:
private bool functionName(int r, int c)
{
return sList.Any(s => s.L.R == r amp;amp; s.L.C == c);
}
Метод Any extension в Linq применяется к последовательности IEnumerable (которая может быть, например, списком) и возвращает true, если какой-либо из элементов в последовательности возвращает true для данного предиката (в данном случае лямбда-функции s => s.L.R == r amp;amp; s.L.C == c
).
Ответ №2:
что-то вроде:
return sList.Any(s => s.L.R == r amp;amp; s.L.C == c);
Ответ №3:
поскольку вы должны предоставить больше информации о классах (s.L.R ??) вы используете, и я не знаю, чего вы действительно хотите в качестве результата функции, в этом я не уверен на 100 процентов:
return sList.Any(s => s.L.R == r amp;amp; s.L.C == c);
/ e: похоже, я немного опоздал, извините, ребята. Не копировал ваш.
Ответ №4:
Один пример
private bool functionName(int r,int c)
{
var ret = from s in sList where s.L.R==ramp;amp;s.L.C==c select s;
return ret.Count()>0;
}