2016-08-22 46 views
0

我有一个控制器方法,它在我的asp.net mvc项目中使用edmx模型,该项目用于从SQL数据库中的View中获取数据。目前,我只对该表的两列感兴趣。我可以使用我的实体类和简单的Linq语句来获取数据,以将返回的数据存储到列表中。我想要做的是循环遍历列表,并检查这两列的数据都填充到哪里(值可以是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

我错过了什么吗? 'from icp in entities.LogicalConnectionEndToEnd_v where InterconnectPortGidA!= null && InterconnectPortGidB!= null' –

+1

第一个评论者说什么,我不会在查询结果周围创建一个匿名对象。我只是发送结果 --return Json(checkInterConnectPorts,JsonRequestBehavior.AllowGet); – Fran

+0

@ freedomn-m,我如何接受你的评论作为答案? – DeeTee

回答

2

您可以from实体后和select前直接使用where

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

这将让通过LINQ转换为SQL语句SQL语句,所以会直接在SQL服务器上运行,即最有效。

该查询是延迟的,它只在执行查询时运行,在这种情况下在.ToList()时。

相关问题