Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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#_List_Linq_Class - Fatal编程技术网

C# 将两个不同的字符串列表合并到一个类列表

C# 将两个不同的字符串列表合并到一个类列表,c#,list,linq,class,C#,List,Linq,Class,我有这样一门课: class Item { public string eventName{ get; set; } public string performanceTime { get; set; } } 我有两个数据列表: List<string> progName = getProgrammingNames(); List<string> progTimes = getProgrammingTimes() List progName=getPr

我有这样一门课:

class Item
{
    public string eventName{ get; set; }
    public string performanceTime { get; set; }
}
我有两个数据列表:

List<string> progName = getProgrammingNames();
List<string> progTimes = getProgrammingTimes()
List progName=getProgrammingNames();
List progTimes=getProgrammingTimes()
两个字符串列表中都有数据,我想将它们合并到

List<Item> itemList = new List<Item>();
List itemList=new List();
如何操作?

用于将项目集合在一起,然后投影
项目
类:

var result = progName.Zip(progTimes, (name, time) => new Item { 
    eventName = name, 
    performanceTime = time }).ToList();
As
Zip
仅返回索引相同的项,如果一个集合比另一个集合大,则将丢失这些项。在这种情况下,可以使用完全外部联接的形式:

var result = from i in Enumerable.Range(0, Math.Max(progName.Count, progTimes.Count))
             join n in progName.Select((item, index) => new { item, index }) on i equals n.index into names
             from n in names.DefaultIfEmpty()
             join t in progTimes.Select((item, index) => new { item, index }) on i equals t.index into times
             from t in times.DefaultIfEmpty()
             select new Item { eventName = n?.item, performanceTime = t?.item };

一个简单的For循环是不够的

        List<string> progName = getProgrammingNames();
        List<string> progTimes = getProgrammingTimes();

        if (progName.Count != progTimes.Count)
            throw new Exception("2 list counts are different");

        List<Item> itemList = new List<Item>();

        for (var l_i = 0; l_i < progName.Count; l_i++)
        {
            itemList.Add(new Item()
            {
                eventName = progName[l_i],
                performanceTime = progTimes[l_i]
            });
        }
List progName=getProgrammingNames();
List progTimes=getProgrammingTimes();
if(progName.Count!=progTimes.Count)
抛出新异常(“2个列表计数不同”);
List itemList=新列表();
对于(var l_i=0;l_i
如果一个事件名称有多次执行,是否仍要为给定的事件重复相同的事件名称time@shikiko-什么意思?您有两个独立的集合。如何判断第一个项目中的哪个项目属于第二个项目中的一个?例如,如果事件A有多个演出时间,例如事件|演出时间事件A | 10:50,11:30事件B | 9:00,10:00我如何相应地添加它们是的,但您有一个列表只包含名称,第二个列表只包含时间。那你怎么知道哪个名字是哪个时间的?
getProgrammingNames
getProgrammingTimes
做了什么?@shikiko-这是一个非常不同的问题,我并不真正理解合并的逻辑。我建议您先试试,然后再发布另一个问题,包括3个列表的描述、每个列表的一些样本数据和预期结果。另外,请以编译的方式发布,这样更容易提供帮助。如果你希望你能评论我,我将很乐意尝试和帮助