我什么时候应该使用 C# 的 LINQ? [关闭]

2023-12-21

我正在学习 C#,我发现 LINQ 非常有趣。然而,令我困惑的是,我想不出使用 LINQ 会有巨大帮助的场景,因为在代码中复制 LINQ 功能实际上并不那么困难。

您有什么个人经验/建议想分享吗?

Thanks!


我发现我以前编写循环来填充容器时几乎每次都会使用 LINQ。我使用 LINQ to SQL 作为我的 ORM,并在其他地方使用很多 LINQ。

下面是我为 Active Directory 帮助程序类编写的一个小片段,用于查找特定用户是否属于特定组。请注意使用 Any() 方法来迭代用户的授权组,直到找到具有匹配 SID 的授权组。比替代方案更干净的代码。

private bool IsInGroup( GroupPrincipal group, UserPrincipal user )
{
    if (group == null || group.Sid == null)
    {
        return false;
    }
    return user.GetAuthorizationGroups()
               .Any( g => g.Sid != null && g.Sid.CompareTo( group.Sid ) == 0 );
}

选择:

private bool IsInGroup( GroupPrincipal group, UserPrincipal user )
{
    if (group == null || group.Sid == null)
    {
        return false;
    }
    bool inGroup = false;
    foreach (var g in user.GetAuthorizationGroups())
    {
         if ( g => g.Sid != null && g.Sid.CompareTo( group.Sid ) == 0 )
         {
            inGroup = true;
            break;
         }
    }
    return inGroup;
}

or

private bool IsInGroup( GroupPrincipal group, UserPrincipal user )
{
    if (group == null || group.Sid == null)
    {
        return false;
    }

    foreach (var g in user.GetAuthorizationGroups())
    {
         if ( g => g.Sid != null && g.Sid.CompareTo( group.Sid ) == 0 )
         {
            return true;
         }
    }
    return false;
}

下面是一个代码片段,它对存储库进行搜索、排序,并将前 10 个匹配的业务对象转换为特定于视图的模型(Distance是匹配模型的唯一 id 与 uniqueID 参数的 Levenshtein 编辑距离)。

model.Results = this.Repository.FindGuestByUniqueID( uniqueID, withExpired )
                               .OrderBy( g => g.Distance )
                               .Take( 10 )
                               .ToList()
                               .Select( g => new GuestGridModel( g ) );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我什么时候应该使用 C# 的 LINQ? [关闭] 的相关文章

  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 实体框架 - 选择特定列并返回强类型而不丢失强制类型转换

    我正在尝试做类似的事情这个帖子 https stackoverflow com questions 1094931 linq to sql how to select specific columns and return strongly
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 如何跟踪Linux内核中的write系统调用?

    我正在尝试这样做 我通过 iperf 一种开源工具 从一台机器向另一台机器发送数据包 我想跟踪写入系统或发送调用 请帮助我做到这一点 如果有人可以指导通过 Ftrace 框架来跟踪系统调用 否则通过任何其他跟踪工具就太好了 困难的部分是准确
  • Git 克隆、推送和拉取都挂起,没有消息

    直到昨天 git在我的电脑上完美运行 现在 每当我尝试推送 拉取或克隆存储库时 git 都会挂起 我已经尝试过 SSH 和 HTTPS 与围绕此问题发布的许多其他 StackOverflow 问题不同 我的操作在同一早期阶段挂起 例如 运行
  • 如何在 Bazel 中静态链接系统库?

    如何在大多数静态模式下静态链接系统库 linkstatic 1 我尝试使用 Wl Bstatic lboost thread Wl Bdynamic 或 Wl Bstatic lboost thread Wl Bdynamic 但它们都不起
  • 不可见字符 - ASCII

    有没有无形的人物 我已经在谷歌上检查了隐形字符 最终得到了很多答案 但我不确定这些答案 Stack Overflow 上的人可以告诉我更多相关信息吗 我还检查了 Facebook 上的个人资料 发现该用户的个人资料中没有任何姓名 这怎么可能
  • 从 aws cloudformation 描述堆栈获取输出

    我正在使用下面的方法来获取堆栈信息 http docs aws amazon com cli latest reference cloudformation describe stacks html我想通过 AWS Cli aws clou
  • 对带有&不带重定向的“mysql -e”输出格式有点好奇

    说我跑步的时候mysql u user p e select id from db users limit 1 I got id 8434 当我将输出 标准输出重定向到某个文件时 例如mysql u user p e select id f
  • 写入 webroot 目录之外的文本文件

    我正在尝试使用 PHP 读取和写入文本文件 使用 html 页面上的按钮读取文件 该文件是使用 html 页面上的按钮编写的 该按钮从文本框中获取参数 当文本文件位于 webroot 目录中时 我成功写入文本文件 我希望能够读取 写入位于
  • 如何检测 jQuery 触发事件完成?

    我试图触发依赖于第一个事件的第二个事件 如下所示 productFamilyId val data contents productfamily productFamilyId trigger change function product
  • 使用起订量和 TDD,从哪里开始?

    我有一个服务器应用程序 我想知道如果我想开始实施 TDD 并使用 Moq 我应该从哪里开始 我可以读哪些关于这个主题的好书 而且不太 面向网络 我对此事有疑问 例如 我应该模拟我想要测试的每个对象 还是只模拟那些我无法实现的对象 例如文本编
  • 如何在 R 中添加副标题并更改 ggplot 图的字体大小?

    我尝试使用添加字幕 opts subtitle text 但什么也没有出现 主标题确实有效 opts title text 我还想为轴 标签和坐标 使用更大的字体 但我不知道该怎么做 theme get 将向您显示可以使用的 隐藏 选项op
  • UnboundLocalError:局部变量...在赋值之前引用[重复]

    这个问题在这里已经有答案了 import hmac base64 hashlib urllib2 base https def makereq key secret path data hash data path chr 0 data s
  • 未捕获的类型错误:数据[选项]不是函数 bootstrap.js:1215

    我使用 bootstrap lightbox 时收到以下错误here http ashleydw github io lightbox Uncaught TypeError data option is not a function boo
  • 模拟 Photoshop 的“色彩范围”算法

    我正在尝试用在服务器上完成的自动过程来替换在 PhotoShop 中完成的手动过程 目前 在 PhotoShop 中 颜色范围 工具用于使用 模糊度 系数来选择一系列颜色 并根据处理的部分从黑色或白色开始 我最初的方法包括使用 L a b
  • Midas/DataSnap 项目中的 DUnit 测试

    如何在 Delphi 2006 的 Midas DataSnap 项目中设置 DUnit 测试 Edit 如何在 TRemoteDataModule 中设置 Dunit 测试 Delphi 2006 中的项目向导不适用于 TRemoteDa
  • @XmlRootElement 和 抛出 IllegalAnnotationExceptions

    当我编组此类的实例时 XmlRootElement public static class TestSomething
  • AWS DynamoDB 始终面向互联网

    Question 试图找到一种将 DynamoDB 放入 VPC 中的方法 但目前尚未找到 对于 Lambda 它可以位于具有来自 VPC 子网的 IP 的 ENI 的 VPC 内 然后 Lambda 在没有 NAT 的情况下没有任何互联网
  • NEAT:指定

    我试图自己使用原始论文来实现整洁 但被卡住了 假设在上一代我有以下物种 Specie 1 members 100 avg score 100 Specie 2 members 150 avg score 120 Specie 3 membe
  • 装饰器不支持函数调用,但调用了“FileTypeModule”

    尝试设置ngx formly material 文件 https github com alEX860111 ngx formly material file 但我得到一个错误 装饰器不支持函数调用 但调用了 FileTypeModule
  • Android的RelativeLayout似乎坏了

    我正在开发一个布局 其中使用带有RelativeLayout 行项目的ListView 行项目本身无法正确显示 问题是 txtVideoDuration TextView 绘制在行项目的顶部而不是底部 因此 txtVideoTitle 的高
  • 我什么时候应该使用 C# 的 LINQ? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在学习 C 我发现 LINQ 非常有趣 然而 令我困惑的是 我想不出使用 LINQ 会有巨大帮助的场景 因为在代码中复制 LINQ 功能实际