#c# #.net #linq
#c# #.net #linq
Вопрос:
Как мы можем написать LINQ эквивалентный код этого кода:
foreach (Function objFunc in _objCFLFile.CFLFunctionsList)
{
if (objFunc.Name == txtFunctionName.Text)
{
ShowMessage(Constants.M10036);
return false;
}
}
спасибо, ребята, я пометил ваши ответы как 1
Если я хочу добавить еще одно условие, подобное этому
foreach (Function objFunc in _objCFLFile.CFLFunctionsList)
{
if (objFunc.Name == txtFunctionName.Text amp;amp; objFunc.Signature == OtherFunction.Signature)
{
ShowMessage(Constants.M10046);//function already exists
return false;
}
}
в этом случае также существуют различные синтаксисы LINQ, но какой из них будет идеальным, эффективным?
Комментарии:
1. Все ответы эквивалентны, за исключением Алиостада. Вы можете добавить дополнительное условие, просто добавив amp;amp; и т.д. К лямбда-выражению, переданному в Any()
Ответ №1:
if (_objCFLFile.CFLFunctionsList.Any(f => f.Name == txtFunctionName.Text))
{
ShowMessage(Constants.M10036);
return false;
}
С вашим дополнительным требованием:
if (_objCFLFile.CFLFunctionsList.Any(f => f.Name == txtFunctionName.Text amp;amp;
f.Signature == OtherFunction.Signature))
{
ShowMessage(Constants.M10036);
return false;
}
Если вам нужно добавить еще много условий, возможно, стоит создать метод для сравнения.
Ответ №2:
Использование Any():
if (_objCFLFile.CFLFunctionsList.Any(objFunc =>
objFunc.Name == txtFunctionName.Text))
{
ShowMessage(Constants.M10036);
return false;
}