c# - 是否可以从 .Any() 中获取找到的值?
问题描述
如果我使用 .Any() 检查列表/集合是否包含值,是否可以以某种方式使用这些值来避免调用单独的 .Where()?
例如:
if(thisList.Any(i => i.fieldCheck == thingToCheck)
{
//use i here instead of thisList.Where(i => i.fieldCheck == thingToCheck)
}
为清楚起见进行编辑:我基本上将 .Any 用作空检查,以便我可以安全地使用 Where 的任何结果,而无需进行其他检查。而不是编写代码来分配一些东西给 .Where 我想使用在 .Any 中匹配的任何值
解决方案
不,但您可以使用foreach
:
foreach(var x in thisList.Where(i => i.fieldCheck == thingToCheck))
{
//use x here
}
如果您想在循环之后知道有匹配的值,您可以在其中初始化一个bool
变量true
。这不是很优雅但很有效,因为您只执行一次查询。
如果结果列表不大,您还可以将匹配项放入另一个列表中以使代码更好:
var matchingItemList = thisList.Where(i => i.fieldCheck == thingToCheck).ToList();
if(mattchingItemList.Any()) // efficient because the query is not executed again
{
// use matchingItemList, for example with a loop
}
如果您只期望一个匹配的项目,您可以使用FirstOrDefault
:
var x = thisList.FirstOrDefault(i => i.fieldCheck == thingToCheck);
if(x != null)
{
// use x
}
推荐阅读
- html - 在提交之前向 HTML 表单输入框中的现有值添加附加字符串
- java - 如何将 TextView 放在 Button 前面
- reactjs - 流 - 无法使用“Home”扩展“组件”,因为对象文字 [2] 与属性“状态”中的未定义 [3] 不兼容
- python - 从 JSON 将多种食物写入数据库
- angular - 角度 6 单元测试 - 如何注入具有静态属性的类进行测试
- r - 使用 tidyquant R 遍历参数列表
- javascript - setTimeout 执行自身,但不执行其功能: css.("background-color")
- python - Django 1.11:尚未加载应用程序
- html - 更改 CSS 中的背景颜色(现场明暗主题)
- r - 运行 lm 时“找不到对象”