日安,我有一个问题,我需要从查询中拉出几个值
var val= context.tab1.Select(x=> new {x.a,x.b,x.c})
但是变量“瓦尔”将具有匿名类型,因此我无法完成我的任务。我的下一个想法是获取变量并将其放入Tuple中,但这并不舒服,因为我无法在Select状态下命名Tuple中的值
var val1= context.tab1.Select(x => Tuple.Create(x.a, x.b, x.c)
在所有这些之后,我有一个问题是如何将linq Select中的值放入ValueTuple中?
var val2= context.tab1.Select(x => (int,int,DateTime) (x.a, x.b, x.c))
抱歉我的英语不好,谢谢
var val= context.tab1.Select(x=> new {x.a,x.b,x.c})
var val1= context.tab1.Select(x => Tuple.Create(x.a, x.b, x.c)
var val2= context.tab1.Select(x => (int,int,DateTime) (x.a, x.b, x.c))
2条答案
按热度按时间q8l4jmvw1#
基于你引用
context
的代码示例,我假设你正在谈论一些ORM,比如Entity Framework,它不仅使用“简单的”LINQ-to-Objects,而且基于使用expression trees的IQueryable
接口的组合来执行SQL生成。如果是-则否,目前不可能通过“标准”语法创建值元组,因为不可能在表达式树中使用值元组字面量。您可以在github上监视以下问题/讨论:
如果你真的想这样做,你可以把
IQueryable
转换为IEnumerable
,并把select转换为一个值元组:或者
或者通过@iman safari建议的方法间接。
但我认为这在任何情况下都有点无意义,因为用records创建一个新类型在现代. NET中非常容易,所以只需创建一个类型并使用它。
另请阅读:
z5btuh9x2#
尝试添加如下方法:
你可以任意改变t1...tn。
您可以使用First()来确保它正常工作。