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    
posted @   ChuckLu  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用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()
点击右上角即可分享
微信分享提示