尝试使用 linq 聚合函数
trying to use linq aggregate function
我有以下查询,我在哪里使用带有 select 的 where 子句并获得结果(librarySourceRowInputs
的列表)并且想使用聚合而不是(where and select).
在此过程中,我试图访问聚合内的相同变量但未获得任何引用,下面是相同的代码
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
};
下面是我尝试使用聚合的函数
// trying to replace the where and select in above with aggregate
var LibrarySourceRowInputs = libraries.Aggregate(new List<LibrarySourceRowInput>(),
(prev, next) =>
// here I am not getting any reference for Id
);
我不确定这是实现此目的的正确方法还是任何其他方法。任何人都可以就此提出任何想法,在此先感谢!
我通过使用聚合解决了这个问题,如下所示
LibrarySourceRowInputs = libraries?.Aggregate(new List<LibrarySourceRowInput>(),
(acc, ids) =>
{
if (ids != null)
{
acc.Add(new LibrarySourceRowInput() { LibrarySourceId = ids.Id,
SourceOfDataId = ids.SourceOfData.Id });
}
return acc;
})
我有以下查询,我在哪里使用带有 select 的 where 子句并获得结果(librarySourceRowInputs
的列表)并且想使用聚合而不是(where and select).
在此过程中,我试图访问聚合内的相同变量但未获得任何引用,下面是相同的代码
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
};
下面是我尝试使用聚合的函数
// trying to replace the where and select in above with aggregate
var LibrarySourceRowInputs = libraries.Aggregate(new List<LibrarySourceRowInput>(),
(prev, next) =>
// here I am not getting any reference for Id
);
我不确定这是实现此目的的正确方法还是任何其他方法。任何人都可以就此提出任何想法,在此先感谢!
我通过使用聚合解决了这个问题,如下所示
LibrarySourceRowInputs = libraries?.Aggregate(new List<LibrarySourceRowInput>(),
(acc, ids) =>
{
if (ids != null)
{
acc.Add(new LibrarySourceRowInput() { LibrarySourceId = ids.Id,
SourceOfDataId = ids.SourceOfData.Id });
}
return acc;
})