Use anonymous type for LINQ based lists instead of var
Use anonymous type for LINQ based lists instead of var
问题
I've LINQ requests that return anonymous types like:
var result = context.Table1.Select(
x => new
{
col1 = x.col1,
col2 = x.col2
}).ToList();
That works fine, until I want to hand over the result to another function.
Than I need to specify exactly, what's type the list is. I cannot use var
anymore.
But if I use
List< (string col1, string col2)> result ...
I get an "Cannot implicitly convert type ..." error.
Yes, I can create a new class for each entity. But is this the only way to handle it?
回答1
If you want to use a tuple type (that's what your (string col1, string col2)
is) instead of an anonymous type (that's what your new { col1=x.col1...}
is), you need another syntax:
List<(string col1, string col2)> list = context.Table1
.Select( // linq to entities
x => new
{
col1 = x.col1,
col2 = x.col2
})
.ToArray() // go on with linq to objects for use of tuple types
.Select(x => (col1: x.col1, col2: x.col2))
.ToList();
ValueTuples aren't supported in Expression trees, so you might need to use a combination of anonymous types and tuple types in your query
See Tuple types, Choosing between anonymous and tuple types
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-07-12 JavaScript--> JavaScript reference--> Statements and declarations--> import
2021-07-12 npm outdated -g --depth=0
2021-07-12 npm Updating packages downloaded from the registry
2019-07-12 asp.net form submit 在Chrome里面看Form提交
2019-07-12 setTimeout
2019-07-12 .slideUp()
2019-07-12 jQuery .delay()