gpt4 book ai didi

c# - 按正确顺序获取数据集子行

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:34 24 4
gpt4 key购买 nike

我输入了两个表之间具有 1:N 关系的数据集。子表有“顺序”列,我在将数据加载到数据集中时用于在 SP 中排序(排序依据)。据我了解,使用数据集时无法保证此顺序。我需要父行的 GetChildRows 并确保行按顺序列中定义的特定顺序排列。现在我执行以下操作:

class Program
{
static void Main(string[] args)
{
DataSet1 ds = new DataSet1();
//load data
DataSet1.ParentTableRow parentRow = ds.ParentTable.FindByID(1);
DataSet1.ChildTableRow[] childRows = parentRow.GetChildTableRows();
Array.Sort<DataSet1.ChildTableRow>(childRows, new ChildTableCoparer());
//Enumerate fields is right order
}
}

public class ChildTableCoparer : IComparer<DataSet1.ChildTableRow>
{
public int Compare(DataSet1.ChildTableRow x, DataSet1.ChildTableRow y)
{
if (x.Order > y.Order) return 1;
if (x.Order < y.Order) return -1;
return 0;
}
}

在使用 GetChildRows() 时是否有更好的方法来确保顺序?

最佳答案

您可以在从中选择行之前尝试对子表进行排序。这样,当您从数组中选择行时,希望数组会被预先排序。

例如:

DataSet1 ds = new DataSet1();

//load data
DataSet1.ChildTable.SortExpression = "Order";

DataSet1.ParentTableRow parentRow = ds.ParentTable.FindByID(1);
DataSet1.ChildTableRow[] childRows = parentRow.GetChildTableRows();
Array.Sort<DataSet1.ChildTableRow>(childRows, new ChildTableCoparer());
//Enumerate fields is right order

或者,您可以编写一个 LINQ 表达式来对结果数组进行排序

关于c# - 按正确顺序获取数据集子行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com