尝试使用 linq 聚合函数

问题描述

我有以下查询,其中我将 where 子句与 select 一起使用并获取结果(k8s 的列表),并且想使用聚合而不是(where 和 select)。

在这个过程中,我试图访问聚合内的相同变量,但没有得到任何引用,下面是相同的代码

librarySourceRowInputs

下面是我尝试使用聚合的函数

public static LibrarySourceTableInput CreateLibrarySourceTableInput<T>(List<T> libraries,string mechanicalLibraryName)
       where T : ISourceOfData => new LibrarySourceTableinput()
{             
    LibrarySourceRowInputs = libraries?
                             .Where(l => l != null)
                             .Select(l => new LibrarySourceRowinput()
                             {
                                 LibrarySourceId = l.Id,SourceOfDataId = l.sourceOfData.Id
                             }).ToList() ?? new(),MappedLibrarySource = mechanicalLibraryName
};

我不确定这是实现此目的或任何其他方式的正确方法。任何人都可以就此提出任何想法,非常感谢!

解决方法

我使用如下聚合解决了这个问题

 LibrarySourceRowInputs = libraries?.Aggregate(new List<LibrarySourceRowInput>(),(acc,ids) =>
 {
     if (ids != null)
     {
         acc.Add(new LibrarySourceRowInput() { LibrarySourceId = ids.Id,SourceOfDataId = ids.SourceOfData.Id });
     }
     return acc;
 })