如何选择多列而不匿名返回linq中的结果?
例如
context.users.Where(user=> user.id ==10).Select(user => new{user.id, user.email}).FirstOrDefault();
但是在那种情况下我返回了一个匿名对象,所以如何返回具有指定列的user类型的对象。
答案 0 :(得分:1)
类型User
的类型与context.users
的成员类型相同吗?
如果是这样,您无法选择列,只需执行此操作:
context.users.Where(user => user.id == 10).FirstOrDefault();
但是,如果它是不同的User
类型,则必须执行此操作:
context
.users
.Where(user => user.id == 10)
.Select(user => new User { Id = user.id, Email = user.email })
.FirstOrDefault();
或者可能这样:
context
.users
.Where(user => user.id == 10)
.Select(user => new { user.id, user.email })
.Take(1)
.ToArray()
.Select(user => new User { Id = user.id, Email = user.email })
.FirstOrDefault();
答案 1 :(得分:0)
从用户类中获取实例,然后使用指定的列填充它。
ListAppend
答案 2 :(得分:0)
试试这个:
var anonymous_object = context.users.Where(user=> user.id ==10).Select(user => new{user.id, user.email}).FirstOrDefault();
User user_object = null;
if(anonymous_object != null)
{
user_object = new User()
{
id = anonymous_object.id,
email = anonymous_object.email
};
}