Linq to objects - 选择第一个对象

2024-01-30

我对linq几乎一无所知。

我正在这样做:

var apps = from app in Process.GetProcesses()
    where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
    select app;

这让我得到了符合该标准的所有正在运行的进程。

但我不知道如何获得第一个。我在网上找到的例子似乎意味着我必须这样做

var matchedApp = (from app in Process.GetProcesses()
    where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
    select app).First();

这让我觉得有点难看,并且如果没有匹配的进程也会抛出异常。有没有更好的办法?

UPDATE

我实际上正在尝试找到第一个匹配的项目,然后调用SetForegroundWindow on it

我想出了这个解决方案,它也让我觉得丑陋和糟糕,但比上面的要好。有任何想法吗?

var unused = from app in Process.GetProcesses()
    where app.ProcessName.Contains( "MyAppName" ) && app.MainWindowHandle != IntPtr.Zero
    select SetForegroundWindow( app.MainWindowHandle ); // side-effects in linq-query is technically bad I guess

@FryHard FirstOrDefault 可以工作,但请记住,如果没有找到它,它会返回 null。此代码未经测试,但应该接近您想要的:

var app = Process.GetProcesses().FirstOrDefault(p => p.ProcessName.Contains("MyAppName") && p.MainWindowHandle != IntPtr.Zero);

if (app == null)
    return;

SetForegroundWindow(app.MainWindowHandle);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq to objects - 选择第一个对象 的相关文章

随机推荐

  • 打印两次

    我出于教学目的编写了一个简单的程序 除了打印出名称和您选择的计算答案的部分之外 一切正常 if 语句似乎执行了两次 就好像它在前进之前向后退了一步 它将打印出 您想继续吗 但不会提示用户输入是 否 而是会再次打印出计算的答案 然后询问他们是
  • CodeDom:编译部分类

    我正在尝试编译文本文件中的代码以更改 WinForms 应用程序主窗体上的 TextBox 中的值 IE 将另一个带有方法的分部类添加到调用表单中 该表单有一个按钮 button1 和一个文本框 textBox1 文本文件中的代码是 thi
  • 错误:_handle onLaunch iOS 9 中的特定操作

    我在 iOS 9 上收到以下错误 UIApplication handleNonLaunchSpecificActions forScene withTransitionContext completion unhandled action
  • PHP - 将 MS Word 特殊字符(^l、^p、^s)更改为“,”

    所以我拥有的是一个 MS Word docx 文件 其中包含一些未真正排序的数据 示例输出 1 姓氏 名字 地址 城市 州邮政编码 通过执行 Ctrl Shift 我可以查看文件中存在的所有特殊字符 ETC 然后用 替换它们作为分隔符 然后
  • MDX SSAS - 最大测量日期

    只需要在多维数据集中的所有测量中获取最大日期即可 例如 DateID is a Dimention Measure First Measure Second Measure 如何获取列表MAX DateID 来自我的立方体中的所有措施 以下
  • 处理运行时创建的 OLEObject 命令按钮的事件

    我已经为这个问题苦苦挣扎了一段时间 我想做一些非常简单的事情 我想在运行时创建多个命令按钮 然后用一个过程处理这些命令按钮的事件 所以我构建了一个 withevents 类来处理自动化 但我的代码不起作用 当我运行 Test 时 会创建 C
  • 有没有办法将“a”标签链接取消设置为默认颜色

    我有一个 a 标签 它是另一个网页的正常链接 我想禁用默认链接外观 除非鼠标光标悬停在链接上 此时应恢复默认的正常链接外观 这是我到目前为止所尝试过的 HTML a href example com example a CSS a colo
  • ASP.NET MVC URL 生成性能

    ASP NET MVC 的一点基准测试 查看页面代码 public string Bechmark Func
  • 当您不知道列数时,使用所有列按顺序对矩阵进行排序

    我有一个从递归左连接动态生成的数据框 如何使用order当我事先不知道列数时应用到所有列的函数 我希望结果首先在第一列排序 然后在第二列排序 在下面的示例中 我有四列 set seed 123 A lt matrix rep 1 25 4
  • 直接上传图片到twitter

    我需要帮助在 Windows Phone 7 中将图像直接上传到 Twitter 我已经完成了 twitter 的 oauth 流程 也可以更新推文 但我无法使用 wp7 将图像上传到 twitter 我已经通过使用 Hammock Win
  • 如何在不加载程序集的情况下获取程序集的版本?

    大型程序的一个小功能会检查文件夹中的程序集 并用最新版本替换过时的程序集 为了实现这一点 它需要读取现有程序集文件的版本号 而不实际将这些程序集加载到执行进程中 我发现了以下内容在本文中 http blogs msdn com alejac
  • 相当于在MySQL中处理字符串的explode()

    在 MySQL 中 我希望能够搜索 31 7 当另一个值 7 31 我将使用什么语法来分解 MySQL 中的字符串 在 PHP 中 我可能会使用explode string 并将它们放在一起 MySQL 有没有办法做到这一点 背景 我正在处
  • 如何获取 gcloud 的 shell 命令完成(自动完成)?

    I tried both 1 the official Google installation for Ubuntu https cloud google com sdk docs install deb and 2 the one lin
  • 正则表达式验证错误

    我在正则表达式验证方面遇到问题 请参阅如果我将验证放在代码后面 例如 RegexValidator 0 9 MessageTemplateResourceName INVALID PHONE MessageTemplateResourceT
  • 如何在 Angular 8 中存储像 jwt token 这样的数据?是否有另一种使用本地存储或会话存储安全存储的方法?

    我正在使用 JWT 令牌来授权从 Angular 8 网站向我的 API 发出的请求 但是我应该在哪里存储这个用户看不到的令牌呢 我尝试过使用服务 但刷新页面后令牌丢失 您可以使用 cookie 来存储令牌 而不是本地存储或会话存储 但这并
  • 使用脚本编辑器将表情符号 unicode 从 Google 表格插入到电子邮件中

    我正在尝试使用脚本编辑器从谷歌表格中获取一些文本来发送电子邮件 该文本包含表情符号 unicode 但是 当发送电子邮件时 它会打印纯文本而不是显示 unicode 表情符号 我在电子邮件中看到的内容 9889 some text here
  • Boost.Spirit:解析期间设置子语法

    为了处理大量的编译时间和语法的重用 我将语法组成了几个按顺序调用的子语法 其中之一 称为 SETUP 语法 提供了解析器的一些配置 通过符号解析器 因此后面的子语法在逻辑上依赖于该语法 再次通过不同的符号解析器 因此 在解析SETUP之后
  • 控制台应用程序 - DbContext 实例不能在 OnConfiguring 内部使用

    我正在使用 Asp Net Core 控制台应用程序 Entity Framework Core 和工作单元存储库模式 当我使用多线程函数时 出现以下错误 DbContext 实例不能在 OnConfiguring 内部使用 因为此时它仍在
  • 通过作业运行 SP 时响应数据截断

    Subject 我每个月都会创建一份报告 报告的创建包括 2 个步骤 从我们的服务获取 XML 并将其存储在数据库中 解析 XML 并创建文件 在过去的几个月里 我以手动模式创建了报告 现在我想自动化这些东西 但这里来了一个 Problem
  • Linq to objects - 选择第一个对象

    我对linq几乎一无所知 我正在这样做 var apps from app in Process GetProcesses where app ProcessName Contains MyAppName app MainWindowHan