Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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#_.net_Dataset - Fatal编程技术网

C# 以正确的顺序获取数据集子行

C# 以正确的顺序获取数据集子行,c#,.net,dataset,C#,.net,Dataset,我已经用两个表之间的1:N关系类型化了dataset。 子表有“Order”列,在将数据加载到数据集时,我在SP中使用该列进行排序(ordery by)。据我所知,在使用dataset时不能保证此顺序。 我需要父行的GetChildRows,并确保这些行按照order列中定义的特定顺序排列。 现在我做以下几点: class Program { static void Main(string[] args) { DataSet1 ds = new DataSet1(

我已经用两个表之间的1:N关系类型化了dataset。 子表有“Order”列,在将数据加载到数据集时,我在SP中使用该列进行排序(ordery by)。据我所知,在使用dataset时不能保证此顺序。 我需要父行的GetChildRows,并确保这些行按照order列中定义的特定顺序排列。 现在我做以下几点:

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;
    }
}
类程序
{
静态void Main(字符串[]参数)
{
DataSet1 ds=新的DataSet1();
//加载数据
DataSet1.ParentTableRow parentRow=ds.ParentTable.FindByID(1);
DataSet1.ChildTableRow[]childRows=parentRow.GetChildTableRows();
Sort(childRows,new ChildTableCoparer());
//枚举字段的顺序正确
}
}
公共类儿童合作伙伴:IComparer
{
公共整数比较(DataSet1.ChildTableRow x,DataSet1.ChildTableRow y)
{
如果(x订单>y订单)返回1;
如果(x.Order

在使用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    
dataset1ds=newdataset1();
//加载数据
DataSet1.ChildTable.SortExpression=“订单”;
DataSet1.ParentTableRow parentRow=ds.ParentTable.FindByID(1);
DataSet1.ChildTableRow[]childRows=parentRow.GetChildTableRows();
Sort(childRows,new ChildTableCoparer());
//枚举字段的顺序正确
或者,您也可以编写一个LINQ表达式来对结果数组进行排序