0

我有一个包含三列的数据表,分别是 ID、名称和值。

我想将此数据表转换为List<long,List<keyvaluepair<string,string>>>.

唯一的技巧是 ID 是来自另一张桌子的外国 ket。因此它可能具有重复值。

我想用 C# 来做。

提前致谢。


不,不是字典......实际上我有两个班级说,定义为......

public class RunParameters
    {
        public long RunId { get; set; }
        public List<WorkflowParameter<string>> WorkflowParameters { get; set; }

        public RunParameters()
        {
            WorkflowParameters = new List<WorkflowParameter<string>>();
        }
    }

 public struct WorkflowParameter<T>
    {
        public string ParameterName
        { get; set; }
        public T ParameterValue
        { get; set; }
    }

我想将数据转换为列表。

我不能使用字典,因为我想序列化这个列表以通过网络发送它......

4

1 回答 1

2

对查询中的ID项目进行分组,并将每个项目从组投影到KeyValuePair

(from r in table.AsEnumerable()
 group r by r.Field<long>("ID") into g
 select g.Select(i => new KeyValuePair<string, string>(
                      i.Field<string>("Name"), i.Field<string>("Value"))
         .ToList()).ToList()

或完全使用方法语法:

 table.AsEnumerable()
      .GroupBy(r => r.Field<long>("ID"))
      .Select(g => g.Select(r => new KeyValuePair<string, string>(
                          r.Field<string>("Name"), r.Field<string>("Value"))
                    .ToList())
      .ToList() 
于 2013-05-13T07:01:55.390 回答