C# 如何重用显式列选择?

C# 如何重用显式列选择?,c#,linq,entity-framework,C#,Linq,Entity Framework,我在查询中使用了一个简单的表达式: private Expression<Func<Account, NewAccount>> DefaultColumns { get { return o => new NewAccount() { Name = o.Name, Id = o.Id }; } } 没问题。但是,我的一些查询使用查询语法: var q = from a

我在查询中使用了一个简单的表达式:

private Expression<Func<Account, NewAccount>> DefaultColumns {
    get {
        return o => new NewAccount() {
            Name = o.Name,
            Id = o.Id
        };
    }
}
没问题。但是,我的一些查询使用查询语法:

var q = from a in context.Accounts

        join c in context.Contracts
        on a.Id equals c.AccountId

        where c.Id == id

        select a;
如何将显式列定义用于该查询方法?我不想在多个位置定义这些列选择。

为什么不这样做

var q = (from a in context.Accounts
    join c in context.Contracts
    on a.Id equals c.AccountId
    where c.Id == id
    select a).Select(DefaultColumns);

编译器不喜欢这样:
查询体必须以select子句或group子句结尾
哦,没错,我不经常使用这种格式。。。为什么不这样呢?因为那太容易了!只是开玩笑,那很好用,谢谢。出于某种原因,我脑子里一直想,发送到数据库服务器的查询将查询所有列。但是,这是有意义的,因为在我们尝试迭代
Queryable
之前,查询不会发送到服务器。是时候结束了。
var q = (from a in context.Accounts
    join c in context.Contracts
    on a.Id equals c.AccountId
    where c.Id == id
    select a).Select(DefaultColumns);