Преобразование строк в столбцы без цикла - PullRequest
1 голос
/ 12 февраля 2010

У меня есть ситуация, когда у меня есть данные, такие как следующие

User1   Address1    HomeAddress     Address1Value
User1   Address2    WorkAddress     Address2Value
User1   Phone1      HomePhone       Phone1Value
User1   Phone2      WorkPhone       Phone2Value
User2   Address1    HomeAddress     Address1Value
User2   Address2    WorkAddress     Address2Value
User2   Phone1      HomePhone       Phone1Value
User2   Phone2      WorkPhone       Phone2Value
User3   Address1    HomeAddress     Address1Value
User3   Address2    WorkAddress     Address2Value
User3   Phone1      HomePhone       Phone1Value
User3   Phone2      WorkPhone       Phone2Value

Теперь мне нужно отобразить вышеуказанные данные в виде таблицы следующим образом.

**Users    HomeAddress      WorkAddress      HomePhone      WorkPhone**
  User1    Address1Value    Address2Value    Phone1Value    Phone2Value
  User2    Address1Value    Address2Value    Phone1Value    Phone2Value
  User3    Address1Value    Address2Value    Phone1Value    Phone2Value

Один вариант, который у меня есть, заключается в том, что я перебираю набор данных и преобразую 4 строки данных в столбцы. а затем связать данные. но это не похоже на эффективный способ сделать, так как у меня есть много данных.

Есть ли эффективный способ сделать это?

Я использую LINQ to SQL для этого. У меня есть представление Sql Server, которое возвращает результат 4 строки на пользователя.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2010

Не отступать слишком далеко от Ответ Марка , я настоятельно рекомендую сделать это на SQL Server. Поворот здесь обычно выполняется намного быстрее (в конце концов, SQL-сервер оптимизирован для такого рода вещей).

Кроме того, это код, который вам не нужно писать (имеется в виду сводный код, поскольку SQL предоставляет вам операцию, а не пишет ее в .NET самостоятельно), что Важный момент здесь, ИМО.

0 голосов
/ 12 февраля 2010

Если вы уже переносите «большое количество данных» по сети из базы данных в приложение, то последний шаг поворота их в памяти вряд ли будет большой проблемой.

IMO, либо поверните его "у источника", либо просто поверните его локально и , а затем посмотрите, не является ли это узким местом. Вы могли бы также написать какую-нибудь модную связывающую модель, но я сомневаюсь, что она того стоит. Последний вариант - использовать «виртуальный режим» (если список поддерживает его) и выполнять перевод во время поиска (в идеале, используя поиск строк на основе словаря - возможно, предварительно вычисленный Lookup<,>).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...