日期:2014-05-20  浏览次数:20909 次

linq to sql 查询的问题,求助
对linq 还不是很熟悉,接触linq了,就有一种冲动要使用它,不用ado了,可是前段时间写一个linq 查询语句的时候出现了问题,问题是这样子的
  var db = Factory.Create();//就是那个实例DataContext
  var AppExam = (from s in db.App_Exam
  where s.Is_A != null && s.A_Penson == username
  orderby s.Id descending
  select new
  {
  Id = s.Id,
  A_Penson = s.A_Penson,
  D_Penson = s.D_Penson,
  D_Phone = s.D_Phone,
  P_Count = s.P_Count,
  A_ExamTime = s.A_ExamTime,
  A_Time = s.A_Time,
  Last_AppTime = s.Last_AppTime,
  Remark = s.Remark

  }).Take(page_size).Skip(page_num);
  return AppExam.ToList();
报错这里select new 这里,我在这里加上了 App_Exam
当初成功了,数据也出来了的,
过来一天,前台弄好了,要使用的时候又出问题了,报错(不允许在查询中显式构造实体类型)
我郁闷了,在网上找了资料
  ItemDataContext dataContext = new ItemDataContext();
  var query = from item in dataContext.Items
  where item.UserID == ownerId
  orderby item.CreateTime descending
  select new
  {
  ItemID = item.ItemID,
  Title = item.Title,
  CreateTime = item.CreateTime,
  UserID = item.UserID
  };
 
  using (dataContext.Connection)
  {
  return dataContext.ExecuteQuery<Item>(query);
  }
  //using (db.Connection)
  //{
  // return db.ExecuteQuery<App_Exam>(AppExam);//报错
  //}

可是 db.ExecuteQuery<App_Exam>(AppExam);这个地方报错,参数不正确,我不知道该加什么参数了,求解、、、
好像这个方法必须使用两个参数,第二个参数是一个数组类型,但是我不知道它有什么用,也不知道怎么加了,求助一下

------解决方案--------------------
不会ling,俺直接写SQL语句,ling多了也复杂。
------解决方案--------------------
试用这种试试,只是思路
select(m=>new {
Id = s.Id,
A_Penson = s.A_Penson,
D_Penson = s.D_Penson,
D_Phone = s.D_Phone,
P_Count = s.P_Count,
A_ExamTime = s.A_ExamTime,
A_Time = s.A_Time,
Last_AppTime = s.Last_AppTime,
Remark = s.Remark

})).Take(page_size).Skip(page_num);


------解决方案--------------------
有可能是用了匿名类的缘故,select new {} 生成的是匿名类,
定义一个强类型, select new class1{
..
}
试试