LINQ语句中的排序无效
在我一直在做的LINQ声明中,我很难得到一些排序。代码如下:LINQ语句中的排序无效,linq,entity-framework,Linq,Entity Framework,在我一直在做的LINQ声明中,我很难得到一些排序。代码如下: public static List<Contact> GetAllTheCusts(string fName, string lName, string middleName, int? customerId, string sort, int pageIndex, int pageSize) { AWEntities entities = Common.Ge
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();
}
public静态列表获取所有客户(字符串fName,
字符串名称,
字符串名称,
int?客户ID,
字符串排序,
int pageIndex,
内部页面大小)
{
AWEntities entities=Common.GetContext();
int skipCount=页面大小*页面索引;
var contacts=实体。contacts
.包括(“个人.客户”)
.其中(c=>customerId.HasValue
?c.personals.Any(i=>i.CustomerID==CustomerID.Value)
:c.personals.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))
其中(c=>string.IsNullOrEmpty(middleName)| | c.middleName.Contains(middleName));
.选择(c=>c);
IOrderedQueryable contactsOrdered=contacts.OrderByDescending(o=>o.ContactID);;
返回contactsOrdered.Skip(skipCount).Take(pageSize.ToList();
}
由于某些原因,OrderByDescending方法未执行其角色。有人能帮忙吗
干杯我想我会在这里发布最后的工作代码。这已成功地将存储过程转换为LINQ to实体:
public static List<Contact> GetCustomersWithContactDetails(string fName, string lName, string middleName, int? customerId,
string sort, int pageIndex, int pageSize, out int count)
{
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));
// Get ordering based on the "sort" parameter
var contactsOrdered = GetOrdering(sort, contacts);
count = contacts.Count();
return contactsOrdered.Skip(skipCount).Take(pageSize).ToList();
}
private static IOrderedQueryable<Contact> GetOrdering(string sort, IQueryable<Contact> contacts)
{
IOrderedQueryable<Contact> contactsOrdered;
if (string.IsNullOrEmpty(sort))
{
contactsOrdered = contacts.OrderBy(o => o.LastName);
}
else
{
SortDirection sortDirection = sort.EndsWith("ASC", StringComparison.Ordinal)
? SortDirection.asc
: SortDirection.desc;
switch (sort.Substring(0, sort.IndexOf(' ')))
{
case "ContactID":
{
if (sortDirection == SortDirection.asc)
{
contactsOrdered = contacts.OrderBy(o => o.ContactID);
}
else
{
contactsOrdered = contacts.OrderByDescending(o => o.ContactID);
}
break;
}
case "LastName":
{
if (sortDirection == SortDirection.asc)
{
contactsOrdered = contacts.OrderBy(o => o.LastName);
}
else
{
contactsOrdered = contacts.OrderByDescending(o => o.LastName);
}
break;
}
case "FirstName":
{
if (sortDirection == SortDirection.asc)
{
contactsOrdered = contacts.OrderBy(o => o.FirstName);
}
else
{
contactsOrdered = contacts.OrderByDescending(o => o.FirstName);
}
break;
}
case "MiddleName":
{
if (sortDirection == SortDirection.asc)
{
contactsOrdered = contacts.OrderBy(o => o.MiddleName);
}
else
{
contactsOrdered = contacts.OrderByDescending(o => o.MiddleName);
}
break;
}
default:
{
contactsOrdered = contacts.OrderBy(o => o.ContactID);
break;
}
}
}
return contactsOrdered;
}
公共静态列表GetCustomerWithContactDetails(字符串fName、字符串lName、字符串middleName、int?customerId、,
字符串排序、int pageIndex、int pageSize、out int计数)
{
AWEntities entities=Common.GetContext();
int skipCount=pageSize*pageIndex;
var contacts=实体。contacts
.包括(“个人.客户”)
.其中(c=>customerId.HasValue
?c.personals.Any(i=>i.CustomerID==CustomerID.Value)
:c.personals.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))
其中(c=>string.IsNullOrEmpty(middleName)| | c.middleName.Contains(middleName));
//根据“sort”参数获取排序
var contactsOrdered=GetOrdering(排序,联系人);
count=contacts.count();
返回contactsOrdered.Skip(skipCount).Take(pageSize.ToList();
}
私有静态IOrderedQueryable GetOrdering(字符串排序,IQueryable联系人)
{
IOrderedQueryable联系人排序;
if(string.IsNullOrEmpty(sort))
{
contactsOrdered=contacts.OrderBy(o=>o.LastName);
}
其他的
{
SortDirection SortDirection=sort.EndsWith(“ASC”,StringComparison.Ordinal)
?SortDirection.asc
:SortDirection.desc;
开关(sort.Substring(0,sort.IndexOf(“”)))
{
案例“ContactID”:
{
if(sortDirection==sortDirection.asc)
{
contactsOrdered=contacts.OrderBy(o=>o.ContactID);
}
其他的
{
contactsOrdered=contacts.OrderByDescending(o=>o.ContactID);
}
打破
}
案例“LastName”:
{
if(sortDirection==sortDirection.asc)
{
contactsOrdered=contacts.OrderBy(o=>o.LastName);
}
其他的
{
contactsOrdered=contacts.OrderByDescending(o=>o.LastName);
}
打破
}
案例“名字”:
{
if(sortDirection==sortDirection.asc)
{
contactsOrdered=contacts.OrderBy(o=>o.FirstName);
}
其他的
{
contactsOrdered=contacts.OrderByDescending(o=>o.FirstName);
}
打破
}
案例“MiddleName”:
{
if(sortDirection==sortDirection.asc)
{
contactsOrdered=contacts.OrderBy(o=>o.MiddleName);
}
其他的
{
contactsOrdered=contacts.OrderByDescending(o=>o.MiddleName);
}
打破
}
违约:
{
contactsOrdered=contacts.OrderBy(o=>o.ContactID);
打破
}
}
}
返回联系人排序;
}
干杯
。选择(c=>c)代码>这不是很有效。发布一些编译代码怎么样?您至少有一个额外的代码>这让我想知道您是否试图重写代码以使其看起来更漂亮。你重写的时候还丢失了什么吗?嗨,伙计们,抱歉耽搁了。我没有注意到这些评论。今晚我将发布一些编译代码。我所说的不履行其职责,是指它没有对结果进行排序。