2016-08-22 3 views
0

У меня есть метод контроллера, который использует модель edmx в моем проекте asp.net mvc, который используется для получения данных из представления в базе данных SQL. В настоящее время меня интересуют только две колонки из этой таблицы. Я могу получить данные, используя класс моих сущностей, и простой оператор Linq для хранения возвращенных данных в список. То, что я хотел бы сделать, это перебрать список и проверить, как эти два столбца заполнены данными (значение может быть либо нулевым, либо заполнено данными) и вернуть строку, которая дает мне истинное значение. Ниже приведен фрагмент код моего метода:C# Model объекта метода контроллера

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 в entity.LogicalConnectionEndToEnd_v где InterconnectPortGidA! = null && InterconnectPortGidB! = null' –

+1

Что сказал первый комментатор, и я бы не создал анонимный объект вокруг результатов запроса. Я просто пришлю результаты --return Json (checkInterConnectPorts, JsonRequestBehavior.AllowGet); – Fran

+0

@ freedomn-m, как я могу принять ваш комментарий в качестве ответа? – DeeTee

ответ

2

Вы можете использовать where непосредственно после from лиц и до select:

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().

Смежные вопросы