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

Linq中怎么用new关键字查询多个字段?
要求:1.返回model数组
  2.利用Lamdom表达式查询出表中的某些字段,不是所有字段,也不是一个字段
model的UserInfo中有ID,UserName,UserPass,UserTel,UserEmail,UserAddress几个字段

public UserInfo[] GetModelList()
  {

  UserInfoDataContext context = null;
  UserInfo[] info = new UserInfo[0];

  try
  {
  context = new UserInfoDataContext();
//这里只需查询3个字段
  var r = (from n in context.UserInfo select new { n.ID,n.UserName,n.UserPass});
  //这里怎么将r转换成model数组??
  info = r.ToList<UserInfo>(); //出现错误
  }
  catch
  {

  }
  finally
  {
  if (context != null)
  {
  context.Dispose();
  }
  }
  return info;
  }

这个该怎么修改?
哪位能够贴出类似的代码让小弟学习一下?

------解决方案--------------------
定义个
public class UserInfo2
{
public int ID;
public string n.UserName;
public string UserPass;
}
然后
public UserInfo2[] GetModelList()
里面
info = r.ToList<UserInfo2>();
------解决方案--------------------
探讨
定义个
public class UserInfo2
{
public int ID;
public string n.UserName;
public string UserPass;
}
然后
public UserInfo2[] GetModelList()
里面
info = r.ToList<UserInfo2>();

------解决方案--------------------
探讨

定义个
public class UserInfo2
{
public int ID;
public string n.UserName;
public string UserPass;
}
然后
public UserInfo2[] GetModelList()
里面
info = r.ToList<UserInfo2>();

------解决方案--------------------
http://hi.baidu.com/anranstl/blog/item/9c8d4209d3f1d82f6a60fb55.html
------解决方案--------------------
首先,楼主你要说明返回model数组用做何用?

new 的对象是匿名对象,但是你的函数的返回类型是UserInfo,肯定报错,匿名对象是无法返回指定类型的。
解决方案一:
UserInfo[],改为List<object>,用泛型集合,也可以实现数组功能。
------解决方案--------------------
List<UserInfo> r = (from n in context.UserInfo select new {ID= n.ID,UserName=n.UserName,UserPass=n.UserPass}).tolist;

或者可以循环r 把他的属性分别赋值给UserInfo的属性
------解决方案--------------------
回3楼:
匿名类型不能跨method传递,
而且要直接赋值,所以也不能定义为class级成员