Как перевести следующий SQL в Linq? - PullRequest
1 голос
/ 19 августа 2011

Я использую IQueryable<T> интерфейс.

Как я могу перевести следующий оператор SQL в IQueryable?

select * from customer
where joindate > DateTime.Now and
      (customertype = 'system' or customerstatus = 'active') and
      customerlocation = 'europe'

Ответы [ 5 ]

3 голосов
/ 19 августа 2011

Примерно так:

    var result = from record in context.customer 
    where record.joindate > DateTime.Now && 
        (record.customertype == "system" || record.customerstatus == "active") && 
        record.customerlocation == "europe"
    select record

Существует замечательный инструмент Linqer, который может помочь вам конвертировать SQL-запросы в LINQ. Конечно, для таких простых случаев это излишне, но вы можете рассмотреть это для тяжелых запросов, конечно, если вы более знакомы с SQL.

Вы можете найти его здесь LINQER .

1 голос
/ 19 августа 2011
var query = 
from i in db.customer
where i.joindate > DateTime.Now 
&& (i.customertype == 'system' || i.customerstatus == 'active')
&& i.customerlocation == 'europe'
select i;
0 голосов
/ 19 августа 2011
var result = (from c in customer
              where (c.joindate > DateTime.Now) &&
                    (c.customertype == "system" || c.customerstatus == "active") &&
                    (c.customerlocation == "europe")
              select c)
             .ToList();
0 голосов
/ 19 августа 2011

Я предпочитаю следующий синтаксис, но вы также можете использовать синтаксис запроса:

var results = yourContext.Customers.Where(c => (c.JoinDate > DateTime.Now) &&
    ((c.CustomerType.Equals("system") || (c.CustomerType.Equals("active")) &&
    (c.CustomerLocation.Equals("europe")));

Использование синтаксиса запроса:

var results = from c in yourContext.Customers
    where (c.JoinDate > DateTime.Now) &&
    (c.CustomerType.Equals("system") || c.CustomerStatus.Equals("active")) &&
    c.CustomerLocation.Equals("europe")
    select c;  
0 голосов
/ 19 августа 2011
var now = DateTime.Now;
var queryable = Customers.Where(x=>x.joindate > now && (x.customertype == "system" || x.customerstatus == "active") && x.customerlocation == "europe")

Не могу вспомнить, будет ли linq вычислять DateTime.Now, поэтому я просто забросил его в переменную раньше времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...