C#控制器方法实体模型
问题描述:
我有一个控制器方法,它在我的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);
}
答
您可以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()
时。
我错过了什么吗? 'from icp in entities.LogicalConnectionEndToEnd_v where InterconnectPortGidA!= null && InterconnectPortGidB!= null' –
第一个评论者说什么,我不会在查询结果周围创建一个匿名对象。我只是发送结果 --return Json(checkInterConnectPorts,JsonRequestBehavior.AllowGet); – Fran
@ freedomn-m,我如何接受你的评论作为答案? – DeeTee