我搞不懂如何将以下两个for循环更改为一个LINQ语句. 有谁能帮帮我吗?

var CleanerAccounts = new List<Account>();
            var array = _context.Accounts.Include(x => x.UserFunctions).ToArray();
            for (int i= 0; i < array.Length; i++)
            {
                foreach(Function f in  array[i].UserFunctions)
                {
                    if(f.UserFunction.Equals("Cleaner"))
                    {
                        CleanerAccounts.Add(array[i]);
                        break;
                    }
                }
            }

LINQ声明的工作版本:

var cleanerAccounts = _context.Accounts
                              .Include(x => x.UserFunctions)
                              .Where(account => account.UserFunctions
                                                       .Any(uf => uf.UserFunction.Equals("Cleaner")))
                              .ToArray();

推荐答案

var cleanerAccounts = _context.Accounts
                              .Include(x => x.UserFunctions)
                              .Where(account => account.UserFunctions
                                                       .Any(uf => uf.UserFunction.Equals("Cleaner")))
                              .ToList();

假设您对在数据库上完成的所有操作都很满意.

如果不是,在.Include()后面加上.AsEnumerable(),那么它将保留在内存中.

Csharp相关问答推荐

"virtual"修饰符对接口成员有什么影响?

`Task`只有在C#中等待时才会运行吗?

如何分配对象后的class的属性?

为什么任务需要在内部使用ManualResetEventSlim?

用C#从Word文档中删除重复的节控件和文本内容控件

Unix上的.NET(核心):.NET意外地未看到通过P/Invoke系统调用对环境变量进行的进程内修改

委托RequestDelegate不带2个参数-ASP.NET Core 8最小API

异步任务调用程序集

将操作从编辑页重定向到带参数的索引页

WPF DataGrid文件名列,允许直接输入文本或通过对话框按键浏览

在C#ASP.NET内核中使用INT AS-1进行控制器场景的单元测试

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

如何从非异步任务中正确返回TypeResult

FakeItEasy自动嘲弄内容

为什么我在使用有效令牌的情况下仍未获授权?

仅在Blazor Web App中覆盖生产的基本路径(.NET8中的_Hosts.cshtml文件功能?)

处理方法内部过滤与外部过滤

除非首先访问使用的终结点,否则本地API上的终结点不起作用

我如何为我的Blazor应用程序构建一个动态教程标注?

C#LINQ多行条件