Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C Linq语法联接_C#_Linq - Fatal编程技术网

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; }
    }
}