我有一个int列表,我想知道我是否可以使用Linq基于以前的列表创建另一个对象T列表.
为了简化问题:
我有一个这样的int列表:1,2,3,4我希望有(1,2),(2,4),(3,6),(4,8)
通常,我们可以在没有Linq的情况下轻松完成
public class T
{
int first;
int Second;
public T(int x, int y)
{
first = x;
Second = y;
}
}
class Program
{
static void Main(string[] args)
{
List<int> series = new List<int>() { 1,2,3,4 };
List<T> obj = new List<T>();
foreach (int item in series)
{
obj.Add(new T(item,item*2));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这非常有效.但是当我尝试使用Linq时
List<T> obj = series.Select(x=> {new T(x,x*2)}).ToList<T>();
Run Code Online (Sandbox Code Playgroud)
我认为它会起作用,但我说错了
Error 2 The type arguments for method 'System.Linq.Enumerable.Select<TSource,TResult>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,int,TResult>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我仍然是一个新手(可能是几个月大)学习Linq :)
摆脱花括号......
List<T> obj = series.Select(x=> new T(x,x*2)).ToList<T>();
Run Code Online (Sandbox Code Playgroud)
当你写一个lambda像:
x => x * 2
Run Code Online (Sandbox Code Playgroud)
假设右侧是返回值.当你使用花括号时,它希望你实际使用return关键字,如下所示:
x => { return x * 2; }
Run Code Online (Sandbox Code Playgroud)
如果你不这样做,我打赌它假设lambda返回void.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |