如何在linq中选择多个列而不匿名返回结果

本文关键字:结果 返回 linq 选择 | 更新日期: 2023-09-27 18:14:10

如何选择多列而不匿名返回linq的结果?

例如

context.users.Where(user=> user.id ==10).Select(user => new{user.id, user.email}).FirstOrDefault();

但是在这种情况下,我返回了一个匿名对象,那么我如何返回具有指定列的user类型的对象

如何在linq中选择多个列而不匿名返回结果

类型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();

从用户类获取实例,然后用指定的列填充它。

   context.users.Where(user=> user.id ==10).Select(user => new user{id=user.id,email= user.email}).FirstOrDefault();

试试这个:

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
    };
}