尝试使用 LINQ 从列表中获取特定值并分配给新列表

Trying to get specific value from a list and assign to new list using LINQ

提问人:Deivydas 提问时间:10/20/2023 最后编辑:Svyatoslav DanylivDeivydas 更新时间:10/21/2023 访问量:40

问:

我有一个由 ID 和 Value 组成的列表。我想获取该列表值并根据其 ID 分配给新列表。

这是我的存储清单:var storages = UnitOfWork.Select<Storage>();

第1个列表:

var smallZonesLoadedAmount = UnitOfWork.Select<LoadingDocumentObject>()
    .Where(x => x.LoadedWeight > 0 && x.StorageId.HasValue)
    .GroupBy(x => x.StorageId)
    .Select(group => new {StorageId = group.Key, LoadedWeight = group.Sum(y => y.LoadedWeight) })
    .ToList();

第二份名单:

var smallZoneInfo = storages.Where(/*x => x.ZoneId == 2 &&*/ x => !string.IsNullOrEmpty(x.Number))
    .GroupBy(y => y.Number)
    .Select(z => new ZoneInformationView
    {
        ZoneName = z.Key,
        TotalCargo = smallZonesLoadedAmount.Where(x => z.Any(s => (int)s.Id == x.StorageId))
            .Select(x => x.LoadedWeight)
            .FirstOrDefault(),
        ZonePermissibleUsage = 0,
        CargoWithLongestStoringTimeInDays = 0,
        AverageLoadingUnloadingInDays = 0,

    }).ToList();

我希望根据存储 ID 和 .smallZonesLoadedAmountsmallZonesInfosmallZonesLoadedAmount StorageID

C# .NET LINQ

评论

0赞 sa-es-ir 10/20/2023
那有什么问题呢?有什么错误吗?
0赞 Deivydas 10/20/2023
我发现了无法在构造函数中使用“Any”的问题。数据库问题
0赞 sa-es-ir 10/20/2023
你的数据库是什么?请标记它。

答:

0赞 DebugCode 10/21/2023 #1

检查此代码,

var smallZoneInfo = storages.Where(x => !string.IsNullOrEmpty(x.Number))
    .GroupBy(y => y.Number)
    .Select(z => new ZoneInformationView
    {
        ZoneName = z.Key,
        TotalCargo = smallZonesLoadedAmount
            .Where(loaded => z.Any(storage => storage.Id == loaded.StorageId))
            .Sum(loaded => loaded.LoadedWeight),
        ZonePermissibleUsage = 0,
        CargoWithLongestStoringTimeInDays = 0,
        AverageLoadingUnloadingInDays = 0
    })
    .ToList(); 

这里的方法 和 用于根据匹配或 从 中筛选和关联值。并且还通过将匹配元素的值相加来计算每个组的 。.Where.AnysmallZonesLoadedAmountStorageIdIdstoragesTotalCargoLoadedWeightsmallZonesLoadedAmount