新版本的C#发布了,其中一个实用的新功能是元组类型(Tuple Types):
public IQueryable<T> Query<T>();
public (int id, string name) GetSomeInfo() {
var obj = Query<SomeType>()
.Select(o => new {
id = o.Id,
name = o.Name,
})
.First();
return (id: obj.id, name: obj.name);
}
有没有一种方法可以将我的匿名类型对象obj转换为我想要返回的元组,而不必逐个映射属性(假设属性名称匹配)?
背景是在ORM中,我的SomeType对象有许多其他属性,并且映射到具有许多列的表。我想执行一个查询,只带回ID和NAME,因此我需要将匿名类型转换为元组,或者我需要让ORM Linq Provider知道如何理解元组,并将与属性相关的列放入SQL select子句中。
return (obj.id, obj.name);
,因为你在函数签名中已经有了这些名称,但是我现在没有 C# 7 来测试它。 - juharrnew { id => o.Id, name => o.Name }
而不是new { id = o.Id, name = o.Name }
吗? - juharr