2016-08-22 3 views
0

SQLデータベースのビューからデータを取得するために使用されるasp.net mvcプロジェクトでedmxモデルを使用するコントローラメソッドがあります。現在、私はそのテーブルの2つの列だけに興味があります。エンティティクラスと単純なLinq文を使用してデータを取得し、返されたデータをリストに格納できます。私がしたいことは、リストを反復し、それらの2つの列がどちらもデータで設定されているかどうかをチェックすることです(値はnullでもデータでも設定できます)。以下は私のメソッドのコードスニペットです:C#コントローラメソッドエンティティモデル

public ActionResult GetCurrentState() 
{ 

    // create the entity object 
    ALCS4Entities entities = new ALCS4Entities(); 

    // Get the InterConnectPortGidAB column data 
    var checkInterConnectPorts = (from icp in entities.LogicalConnectionEndToEnd_v 
            select new 
            { 
             InterconnectPortGidA = icp.InterconnectPortGidA, 
             InterconnectPortGidB = icp.InterconnectPortGidB 
            }).ToList(); 

    return Json(new { interConnectPortGidABList = checkInterConnectPorts}, JsonRequestBehavior.AllowGet); 

} 
+2

何か不足していますか? 'icp from entities.LogicalConnectionEndToEnd_vここで、InterconnectPortGidA!= null && InterconnectPortGidB!= null' –

+1

最初の投稿者が言ったことと、クエリ結果のまわりに匿名のオブジェクトを作成しませんでした。結果を送信するだけです。 --return Json(checkInterConnectPorts、JsonRequestBehavior.AllowGet); – Fran

+0

@ freedomn-m、私は答えとしてあなたのコメントを受け入れることができますか? – DeeTee

答えて

2

あなたが直接from実体後とselectwhereを使用することができます。

var checkInterConnectPorts = (from icp in entities.LogicalConnectionEndToEnd_v 
           where InterconnectPortGidA != null 
           && InterconnectPortGidB != null 
           select new 
           { 
            InterconnectPortGidA = icp.InterconnectPortGidA, 
            InterconnectPortGidB = icp.InterconnectPortGidB 
           }).ToList(); 

これは、SQLステートメントにLINQ to SQLは経由翻訳しまいます、SQLサーバー上で直接実行されます。すなわち、最も効率的です。

クエリは延期され、クエリが実行されたときにのみ実行されます。この場合は、.ToList()の時刻に実行されます。