C# C Linq语法联接
我有一个列表,它具有另一个子列表的属性。然后我有一个客户订单列表和错误列表。如何最好地使用错误消息更新子列表。这就是它看起来的样子:C# C Linq语法联接,c#,linq,C#,Linq,我有一个列表,它具有另一个子列表的属性。然后我有一个客户订单列表和错误列表。如何最好地使用错误消息更新子列表。这就是它看起来的样子: Customer Class: CustomerId CustomerName CustomerLocation List<CustomerOrder> Orders CustomerOrder Class: OrderId OrderStatus ErrorMessage OrderError Class: OrderId ErrorMessag
Customer Class:
CustomerId
CustomerName
CustomerLocation
List<CustomerOrder> Orders
CustomerOrder Class:
OrderId
OrderStatus
ErrorMessage
OrderError Class:
OrderId
ErrorMessage
我需要做的是更新CustomerOrder类OrderStatus,如果我没有错误,它将被设置为p。如果我在列表中有错误,我想将OrderStatus更新为F,然后更新ErrorMessage。我想知道是否有更好的方法来代替使用join和DefaultEmpty创建“新”列表
代码:
然后显示OrderErrors列表:
var orderErrors = new List<OrderError>();
OrderError err = new OrderError();
err.OrderId = "155000";
err.ErrorMessage = "Order Failed Validation";
orderErrors.Add(err);
我需要在orderErrors填充后进行更新,就像客户列表中的OrderId一样。我会使用字典:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<CustomerOrder> orders = new List<CustomerOrder>();
List<OrderError> orderErrors = new List<OrderError>();
Dictionary<string, OrderError> dictOrderErrors = orderErrors
.GroupBy(x => x.OrderId, y => y)
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
foreach (CustomerOrder order in orders)
{
order.ErrorMessage = dictOrderErrors[order.OrderId].ErrorMessage;
}
}
}
public class CustomerOrder
{
public string OrderId { get; set; }
public string OrderStatus { get; set; }
public string ErrorMessage { get; set; }
}
public class OrderError
{
public string OrderId { get; set; }
public string ErrorMessage { get; set; }
}
}
请分享你的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<CustomerOrder> orders = new List<CustomerOrder>();
List<OrderError> orderErrors = new List<OrderError>();
Dictionary<string, OrderError> dictOrderErrors = orderErrors
.GroupBy(x => x.OrderId, y => y)
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
foreach (CustomerOrder order in orders)
{
order.ErrorMessage = dictOrderErrors[order.OrderId].ErrorMessage;
}
}
}
public class CustomerOrder
{
public string OrderId { get; set; }
public string OrderStatus { get; set; }
public string ErrorMessage { get; set; }
}
public class OrderError
{
public string OrderId { get; set; }
public string ErrorMessage { get; set; }
}
}