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