gpt4 book ai didi

c# - 如何在 C# 中使用 linq 获取多级深度订单项?

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:23 26 4
gpt4 key购买 nike

场景:

class Job 可以有多个Task,每个Task 可以有多个Charge。我想要做的是获取任何特定工作的所有 Charge 列表。下面是我目前用来解决这个问题的代码。但我觉得这不是最好的解决方案(因为它使用的循环很少)。谁能建议我如何使用 Linq/Lambda 表达式来做到这一点?谢谢。

代码:

//Model Class
public class Job
{
public int id { set; get; }
public List<Task> Tasks { set; get; }
}

public class Task
{
public int id { set; get; }
public List<TaskCharge> TaskCharges { set; get; }
}

public class TaskCharge
{
public int id { set; get; }
public decimal Amount { set; get; }
public DateTime DateAdded { set; get; }
}
// Method to GetTransactions
public void GetTransactions()
{
var transactions = new List<Transaction>();
if (job.Tasks != null && job.Tasks.Any())
{
foreach (var task in job.Tasks)
{
if (task.TaskCharges != null && task.TaskCharges.Any())
{
foreach (var tc in task.TaskCharges)
{
if (tc.IsAccepted)
{
transactions.Add(new Transaction
{
//assign properties like below
//Description = tc.Description,
//TransactionAmount = tc.Amount
//and so on
});
}
}
}
}
}
}

最佳答案

这个怎么样?

var tasks = job.Tasks ?? Enumerable.Empty<Task>();
var transactions = tasks
.Where(t => t.TaskCharges != null)
.SelectMany(t => t.TaskCharges)
.Where(tc => tc.IsAccepted)
.Select(tc => new Transaction(...));

关于c# - 如何在 C# 中使用 linq 获取多级深度订单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37404830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com