在Linq中创建一组由两行组成的情侣

时间:2012-10-29 12:45:51

标签: c# linq linq-to-objects

从SQL Server存储过程'sp_help'的结果中,我们得到一个包含几个表的DataSet。七,如果我是正确的。其中一个包含有关约束的信息。每个外键都由该表中的两个连续行记录。第一行包含约束类型,名称和其他详细信息。它后跟一个空行,除了一列'constaint_keys',它包含约束的列名引用。

其他约束类型在一行中描述。

关于如何使用Linq“扁平化”这些信息的任何想法,我们可以确定任何由两行组成的情侣实际上是由行{n,n + 1}组成

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

将IEnumerable的元素收集两个:

data.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index / 2)

答案 1 :(得分:0)

您可以使用 Enumerable.Range() 来获取您要使用的索引范围:

var unflattenedConstraints = constraintsTable.Rows;
var constraints = from index in Enumerable.Range(0, unflattenedConstraints.Count / 2)
                                          .Select(x => x * 2)
                  let row1 = unflattenedConstraints[index]
                  let row2 = unflattenedConstraints[index + 1]
                  // Combine the rows