如何在没有匿名的情况下选择多个列在linq中返回结果?

时间:2015-09-23 22:14:35

标签: c# linq

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

例如

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

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

3 个答案:

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