2012-06-11 6 views
2

У меня есть две таблицы данных, в которой у меня есть мои данные (D1) с уникальным идентификатором данных и в другой таблице данных (D2), у меня есть идентификаторы всех записи моей таблицы данных (D1) в определенном порядке. Как я могу сортировать таблицу данных (D1) в соответствии с порядком идентификаторов в D2.I использую C# asp.netСортировка таблицы данных на основе порядка сортировки из другой таблицы данных

ответ

1

Вы можете скопировать строки в таблице заказов в Dicationary с индексом. Если предположить, что ключевое поле называется Key код может выглядеть следующим образом:

static void Main(string[] args) 
{ 
    var dt = new DataTable("Data"); 
    var dtOrder = new DataTable("Order"); 

    // Insert some data here 

    int i = 0; 
    var orderDict = new Dictionary<object, int>(); 
    foreach(DataRow row in dtOrder.Rows) 
    { 
     orderDict.Add(row["Key"], ++i); 
    } 

    var ordered = dt.Rows.Cast<DataRow>().OrderBy(r => orderDict[r["Key"]]); 
} 

Как я прочитал комментарий Peaceman71, я думаю, что стоит отметить, что это отсоединен подход. Любое правильное программное обеспечение базы данных сделает это и для вас.

+0

ok этот запрос сортирует только один столбец таблицы данных D1 на основе D2, я хочу сортировать всю таблицу данных D1 на основе идентификатора в D2 – iJade

+0

Нет, это не полностью верно. 'ordered' - это' IOrderedEnumerable 'и содержит полные строки' dt'/'D1'. –

+0

Извините, мой код ошибки работает отлично thnks ..... – iJade

1

Это зависит от того, хотите ли вы для этого в коде или в базе данных.

В базе данных вы бы объединить эти две таблицы, такие как (MS-SQL/T-SQL):

SELECT D2.Sort, D1.* FROM D2 LEFT JOIN D1 ON D2.ID = D1.ID ORDER BY D2.Sort 

В коде это очень сильно зависит от того, где вы храните данные. DataSet, DataTables и т. Д.

+0

Я хочу, чтобы это сделать в коде C# ... У меня есть данные как две таблицы данных – iJade

+0

Благодарим вас за разъяснение. Тогда у вас есть хороший ответ от Муду. – Peaceman71

+0

Вы также можете создать DataSet и добавить две таблицы и отношения. Но я думаю, что этот подход - это больше усилий, чтобы сделать то же самое. – Peaceman71

Смежные вопросы