C# 在Linq中创建由两行组成的一组对

C# 在Linq中创建由两行组成的一组对,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,从SQL Server存储过程“sp_help”的结果中,我们得到一个包含两个表的数据集。如果我是对的话,七个。其中一个包含有关约束的信息。每个外键由该表中的两个连续行记录。第一行包含约束类型、名称和其他详细信息。它后面是一个空行,只有一列“Constant_keys”包含约束的列名引用 其他约束类型在一行中描述 关于如何使用Linq“展平”此信息的任何想法,我们可以确保由两行组成的任何一对实际上是由{n,n+1}行组成的吗 谢谢你的帮助 要将IEnumerable的元素按2进行聚集,请执行以下

从SQL Server存储过程“sp_help”的结果中,我们得到一个包含两个表的数据集。如果我是对的话,七个。其中一个包含有关约束的信息。每个外键由该表中的两个连续行记录。第一行包含约束类型、名称和其他详细信息。它后面是一个空行,只有一列“Constant_keys”包含约束的列名引用

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

关于如何使用Linq“展平”此信息的任何想法,我们可以确保由两行组成的任何一对实际上是由{n,n+1}行组成的吗


谢谢你的帮助

要将IEnumerable的元素按2进行聚集,请执行以下操作:

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

您可以使用获取要使用的索引范围:

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

基本上,您要做的是将IEnumerable行划分为对,对吗?1,2,3,4,5,6,7,8->(1,2)、(3,4)、(5,6)、(7,8)但更准确地说,我只想为外键记录创建对,因为信息分布在两行上。其他约束类型在一条记录中描述。很抱歉,我的问题不够精确:我没有访问.Net 4.5的权限。您不需要.Net 4.5。3.5就足够了(甚至可能是3.0)。没错。然而,我指的是.NET3.5中没有的Zip函数,在您的回答的早期版本中提到过。谢谢你的帮助!这有助于检索外键详细信息。非常感谢。