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
标签:Use,based,col2,use,lists,col1,anonymous,type,types 来源: https://www.cnblogs.com/chucklu/p/16469088.html