2017-12-17 8 views
1

リストに変換すると、次のlinqを直接リストに変換する必要があります。私はまだ問題について説明したエラーを受け取りますが、リストに変換する必要があると言われていますが、エラーはあります。私は私のタイムスタンプの書式を変更する必要があるので、私は上記のLINQの最初の部分'System.Collections.Generic.IEnumerable <AnonymousType#1>'を 'System.Collections.Generic.IEnumerable <>'に変換する方法

List<string> eventResult= (from c in DB.Events 
         where (c.m_turbine_id == turbineid.turbineID) && (c.m_time_stamp >= frmDate && c.m_time_stamp <= toDate) 

       select new EventLogPartialViewModel 
       { 
        Timestamp = c.m_time_stamp, 
        Description = c.m_event_log_description, 
        WindSpeed = c.m_wind_speed, 
        RPM = c.m_rpm, 
        Power = c.m_power 
       }).ToList().Select(x => new 
          { 
           Timestamp = x.Timestamp.ToString("dd/MM/yyyy H:mm:ss"), 
           Description = x.Description, 
           WindSpeed = x.WindSpeed, 
           RPM = x.RPM, 
           Power = x.Power 
          }).ToList().OrderByDescending(m => m.Timestamp); 

...、foreachのような追加の変換を使用せずに?文字列のリストに変換し、私はデータを取得し、リストに変換します、どんな助けもありがとう。あなたはそれをList<string>を割り当てることはできませんので

+0

具体的なタイプにするのはなぜですか? – JohnyL

+0

'string'に5つのプロパティを持つオブジェクトをどのように表現しようとしますか? – JLRishe

+0

@ JLRisheはい私はそれからcsvファイルを取得する必要があり、バイトへの私の変換のために私は文字列のリストが必要です - – moris1983

答えて

2

あなたはヘッダでカンマ区切りのリストを作成する必要があるとして、LINQクエリで

//Add headers as first item 
List<string> eventResult = new List<string>(){"Timestamp,Description,WindSpeed,RPM,Power"}; 

//Add records 
eventResult.AddRange(from c in DB.Events 
         where (c.m_turbine_id == turbineid.turbineID) && (c.m_time_stamp >= frmDate && c.m_time_stamp <= toDate) 

       select new EventLogPartialViewModel 
       { 
        Timestamp = c.m_time_stamp, 
        Description = c.m_event_log_description, 
        WindSpeed = c.m_wind_speed, 
        RPM = c.m_rpm, 
        Power = c.m_power 
       }).ToList().Select(x => 
         x.Timestamp.ToString("dd/MM/yyyy H:mm:ss")) + "," + 
         x.Description + "," + 
         x.WindSpeed + "," + 
         x.RPM + "," + 
         x.Power 

       .ToList()); 
+0

いいえ私はそれらのすべてが必要です、これはちょうど私にタイムスタンプを与えます – moris1983

+0

カンマ区切りの値が必要ですか? – programtreasures

+0

はい私はそれからcsvファイルを取得する必要があり、バイトへの私の変換のために私は文字列のリストが必要です – moris1983

1

、あなたは匿名の複合型を選択しています。匿名タイプの参照を保持するには、varを使用する必要があります。

var eventResult= (from c in DB.Events 
         where (c.m_turbine_id == turbineid.turbineID) && (c.m_time_stamp >= frmDate && c.m_time_stamp <= toDate) 

       select new EventLogPartialViewModel 
       { 
        Timestamp = c.m_time_stamp, 
        Description = c.m_event_log_description, 
        WindSpeed = c.m_wind_speed, 
        RPM = c.m_rpm, 
        Power = c.m_power 
       }).ToList().Select(x => new 
          { 
           Timestamp = x.Timestamp.ToString("dd/MM/yyyy H:mm:ss"), 
           Description = x.Description, 
           WindSpeed = x.WindSpeed, 
           RPM = x.RPM, 
           Power = x.Power 
          }).OrderByDescending(m => m.Timestamp).ToList(); 

また、匿名型を使用する代わりに、参照を処理する複合型のクラスを作成するのが理想的です。

+0

私はそれらをすべてバイトに変換してから、CSVファイルとしてダウンロードしたいので、必要な文字列のリストに入れてください。 – moris1983

+0

複雑なタイプのクラスとしてレコードを取得した後、.csvファイルに変換することをお勧めします。 – lucky

関連する問題