首页 新闻 赞助 找找看

【silverlight查询数据 分页 问题 四问】

0
悬赏园豆:40 [已解决问题] 解决于 2012-06-11 15:50
我用 wcf data service 加EF  
我做分页的时候 想 每页取10条
然后 把数据总数也取出来 


 问题一 有没有办法直接 返回一个int 就是数据总数
  实在没有办法 返回一个 只查询 ID的对象的实体 或者 IQueryable<int>也行


 问题二 当查询的时候 p.EmployeeId.StartsWith(Query.EmployeeId) 如果Query.EmployeeId为空 那就是查询了所有数据
  但这样 他也会匹配数据库吧 这样效率是不是很低下 有没有 当他为空 或null 时 不查询的方法 其他字段也是


 问题三 p.ContractDate >= Query.StartDate && p.ContractDate <= Query.OverDate 这几个参数都是日期类型 
  现在的问题是 当实体 Query.StartDate 的值为空或NULL时 会报错 有没有办法 让他们为空时 不查询此条件


 问题四 还有 p.ContractDate >= Query.StartDate && p.ContractDate <= Query.OverDate 这个写法 有点麻烦 有简便的写法吗
DataServiceCollection<ZX_Elevator> Entities = new DataServiceCollection<ZX_Elevator>();
var rn = (from p in SSC.ZX_Elevator where p.EmployeeId.StartsWith(Query.EmployeeId) && p.ElevatorType.StartsWith(Query.ElevatorType) && p.DesignAdress.StartsWith(Query.DesignAdress) && p.ContractId.StartsWith(Query.ContractId) && p.GuestName.StartsWith(Query.GuestName) && p.MakeAdress.StartsWith(Query.MakeAdress) && p.ContractDate >= Query.StartDate && p.ContractDate <= Query.OverDate orderby p.id descending select p).Skip(skip).Take(take);
Entities.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(Q_Entities_LoadCompleted);
Entities.LoadAsync(rn);
kiba518的主页 kiba518 | 初学一级 | 园豆:189
提问于:2012-01-06 08:26
< >
分享
最佳答案
1

1、DomainService 要重载Count方法

public class DailyOfficeService : DomainService
{
DailyOfficeContext queryContent;
public DailyOfficeService()
{
queryContent = new DailyOfficeContext();
}

protected override int Count<T>(IQueryable<T> query)
{
return query.Count();
}

2、EntityQuery<V_MAIL_MANAGE> query = _content.GetMailInfosQuery(userID);

查询条件开启返回总数 query.IncludeTotalCount = true;

以上2点解决你第一问题

下面几个问题都可以通过 判断解决 列如:

EntityQuery<V_MAIL_MANAGE> query = _content.GetMailInfosQuery(userID);
if (!folderID.IsNullOrEmpty())
{
query = query.Where(d => d.FOLDER_ID == folderID);
}
if (isMustRead != null)
{
query = query.Where(d => d.IS_MUST_READ == isMustRead);
}
if (!key.IsNullOrEmpty())
{
query = query.Where(d => d.THEME.Contains(key) || d.SEND_USER.Contains(key) || d.SEND_DEPT.Contains(key));
}
if (!theme.IsNullOrEmpty())
{
query = query.Where(d => d.THEME.Contains(theme));
}
if (!sendDept.IsNullOrEmpty())
{
query = query.Where(d => d.SEND_DEPT.Contains(sendDept));
}

收获园豆:40
stillwater | 初学一级 |园豆:117 | 2012-03-30 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册