C# 如何将列表与存储库(表)合并

C# 如何将列表与存储库(表)合并,c#,C#,我有两个列表和一个存储库一个表。 表中有更多的列,但重要的列是Id和ShippingNumberslist of number 我应该结合这三个根据日期,其中Id包含日期和装运编号 清单1 清单2 桌子 我可以组合列表1和列表2,但是我不能组合结果列表和存储库。下面您可以找到我所做的: IList<string> myList = new List<string>(); var normalizedlist = IdsList .Select((

我有两个列表和一个存储库一个表。 表中有更多的列,但重要的列是Id和ShippingNumberslist of number 我应该结合这三个根据日期,其中Id包含日期和装运编号

清单1

清单2

桌子

我可以组合列表1和列表2,但是我不能组合结果列表和存储库。下面您可以找到我所做的:

IList<string> myList = new List<string>();
var normalizedlist = IdsList 
            .Select((Ids, index) => new { Ids = Ids, ShippingNumbers = ShippingNumbersList [index].Split(',') })
            .ToList();
        foreach (var ShippingNumber in normalizedlist.SelectMany(x => x.ShippingNumbers).Distinct())
        {
            //fitering and then grouping by date 
            var filtered = normalizedlist.Where(y => y.ShippingNumbers.Contains(ShippingNumber))
                .GroupBy(y => y.Ids.Split('-')[1])
                .Where(y => y.Count() > 1)
                .Select(y => y.Select(z => z.Ids));
            foreach (var date in filtered)
            {
                myList.Add(ShippingNumber + ">>" + string.Join(",", date.ToArray()));
            }
        }
我应该将其与模板库结合,结合后的结果将是:

预期产出:

只需将TemplateRepository添加到其他列表中即可

IdsList.AddRange(TemplateRepository.Select(x => x.Id));
ShippingNumbersList.AddRange(TemplateRepository.Select(x => x.ShippingNumbers));
现在为IdsList和ShippingNumbersList调用联合方法

如果不想修改IdsList和ShippingNumbersList,只需创建一个包含这两个信息的新列表

var newIdsList = IdsList.Concat(TemplateRepository.Select(x => x.Id)).ToList();
var newShippingNumbersList = ShippingNumbersList.Concat(TemplateRepository.Select(x => x.ShippingNumbers)).ToList();
现在您必须为newIdsList和newShippingNumbersList调用combine方法

作为友好提示,请在您的问题中标记答案为已接受

IList<string> myList = new List<string>();
var normalizedlist = IdsList 
            .Select((Ids, index) => new { Ids = Ids, ShippingNumbers = ShippingNumbersList [index].Split(',') })
            .ToList();
        foreach (var ShippingNumber in normalizedlist.SelectMany(x => x.ShippingNumbers).Distinct())
        {
            //fitering and then grouping by date 
            var filtered = normalizedlist.Where(y => y.ShippingNumbers.Contains(ShippingNumber))
                .GroupBy(y => y.Ids.Split('-')[1])
                .Where(y => y.Count() > 1)
                .Select(y => y.Select(z => z.Ids));
            foreach (var date in filtered)
            {
                myList.Add(ShippingNumber + ">>" + string.Join(",", date.ToArray()));
            }
        }
100>>A-28.03.18-B,M-28.03.18-T
100>>S-17.05.18-G,L-17.05.18-P,B-17.05.18-U
300>>A-28.03.18-B,M-28.03.18-T
300>>L-17.05.18-P,B-17.05.18-U
100>>A-28.03.18-B,M-28.03.18-T,Z-28.03.18-K
100>>S-17.05.18-G,L-17.05.18-P,B-17.05.18-U
300>>A-28.03.18-B,M-28.03.18-T,T-28.03.18-L
300>>L-17.05.18-P,B-17.05.18-U
900>>S-17.05.18-G,P-17.05.18-R
IdsList.AddRange(TemplateRepository.Select(x => x.Id));
ShippingNumbersList.AddRange(TemplateRepository.Select(x => x.ShippingNumbers));
var newIdsList = IdsList.Concat(TemplateRepository.Select(x => x.Id)).ToList();
var newShippingNumbersList = ShippingNumbersList.Concat(TemplateRepository.Select(x => x.ShippingNumbers)).ToList();