私は基本的に、このデータセットがあります。 C#ASP.NetでデータをピボットするためにEntity FrameworkまたはGridViewを使用しますか?
+-----------+-----------+---------+---------+
| Name | Machine | Status | Version |
+-----------+-----------+---------+---------+
| Service 1 | Machine 1 | Running | 2.2.2 |
| Service 1 | Machine 2 | Running | 2.2.2 |
| Service 1 | Machine 3 | Running | 2.2.2 |
| Service 2 | Machine 1 | Running | 2.2.2 |
| Service 2 | Machine 2 | Running | 2.2.2 |
| Service 2 | Machine 3 | Running | 2.2.2 |
| Service 3 | Machine 1 | Running | 2.2.2 |
| Service 3 | Machine 2 | Running | 2.2.2 |
| Service 3 | Machine 3 | Running | 2.2.2 |
+-----------+-----------+---------+---------+
私は今、このようなテーブルを取得するには、「ピボット」に名前欄を希望:
私は、このテーブルを与えるMyDbContext db = new MyDbContext();
GridView gridView = new GridView();
gridView.DataSource = db.Services;
gridView.DataBind();
を
+-----------+-----------+-----------+-----------+
| Machine | Service 1 | Service 2 | Service 3 |
+-----------+-----------+-----------+-----------+
| Machine 1 | Running | Running | Running |
| Machine 2 | Running | Running | Running |
| Machine 3 | Running | Running | Running |
+-----------+-----------+-----------+-----------+
これを行うには、Entity FrameworkまたはGridViewに優れたツールがあるかどうかが疑問です。私はgoogleで解決策を見つけようとしていますが、私自身のピボット機能を作成するのには至っていませんが、私は有用な解決策を見つけていません。
編集2:
お知らせ:これは私の実際の環境のスリム化バージョンです。私は3台以上のマシンを監視し、さらに多くのマシンを動的に追加する機能を持っています。私は現時点で3つのサービスしか持っていませんが、これはおそらく後でService 4
とService 5
で既存のマシンまたは新しいマシンに展開されます。だから私はピボットのための一般的な解決策が必要です。ありがとう!
編集1:
db.Database.ExecuteSqlCommand(
"CREATE VIEW pivotedServices AS (" +
"SELECT " +
"Machine, [Service 1], [Service 2], [Service 3] " +
"FROM " +
"(dbo.Services) " +
"PIVOT" +
"(Status FOR [Name] IN ([Service 1], [Service 2], [Service 3])) AS pvt);"
);
しかし、それが動作するように取得していない:
私はPIVOTを使用してビューを作成するために、エンティティフレームワークを使用しようとしました。 "near"( '。 "、いくつかのテストの後、問題のあるSELECT
ステートメントの前の最初のかっこのように見えます)。周囲のかっこを削除すると、" near SELECT "エラーが発生します。 。
私はまた、手動で「ピボット」するためのいくつかのfor-loopsを使ってみましたが、かなりうまく動いています。しかし、もっと良い解決策が必要だと感じています。しかし、私はあなたたちは1を持って望んでいる
この問題のSQLクエリを設計し、あなたが 'Gridview'で試したことを示す必要があります。 – AsifAli72090
GridViewで何も試したことがありません。なぜなら、私はそれに有用なツールが見つからないからです。私が試したことは、バインドする前にいくつかのfor-loopsでデータを手動でループすることです。しかし、そこには「良い方法」がなければならないような気がする。私はまだそれを見つけていない。 – Skillzore
問題のデータベースクエリを追加しました。 – AsifAli72090