Пожалуйста, см. ПРАВКА внизу для текущего статуса моего вопроса.
Я преобразовываю хранимую процедуру в LINQ to Entities и добиваюсь некоторого прогресса. Но я запутался в следующем:
В предложении WHERE SP нулевые значения передаются следующим образом:
WHERE (@customerId IS NULL OR (CUST.CustomerID = @customerId))
До сих пор я придумал следующее:
return entities.Contacts
.Include("Individuals")
.Where(c => customerId.HasValue && c.Individuals.Any(i => i.CustomerID == customerId.Value))
.Select(c => c)
.OrderBy(o => o.LastName)
.Take(10)
.ToList();
Это не работает вообще. 0 предметов возвращены. Может кто-нибудь посоветовать, как это можно перевести на синтаксис LINQ. Спасибо!
Edit:
Я почти получил это. Единственная ложка дегтя сейчас - это заказ. По какой-то причине заказ не соблюдается. Вот некоторый код:
public static List<Contact> GetAllTheCusts(string fName,
string lName,
string middleName,
int? customerId,
string sort,
int pageIndex,
int pageSize)
{
AWEntities entities = Common.GetContext();
int skipCount = pageSize * pageIndex;
var contacts = entities.Contacts
.Include("Individuals.Customer")
.Where(c => customerId.HasValue
? c.Individuals.Any(i => i.CustomerID == customerId.Value)
: c.Individuals.Any(i => i.Customer.CustomerID == i.CustomerID))
.Where(c => string.IsNullOrEmpty(fName) || c.FirstName.Contains(fName))
.Where(c => string.IsNullOrEmpty(lName) || c.LastName.Contains(lName))
.Where(c => string.IsNullOrEmpty(middleName) || c.MiddleName.Contains(middleName));
.Select(c => c);
IOrderedQueryable<Contact> contactsOrdered = contacts.OrderByDescending(o => o.ContactID);;
return contactsOrdered.Skip(skipCount).Take(pageSize).ToList();
}
Я был бы очень рад и благодарен за разрешение заказа.
Спасибо