Linq ForEach - 返回无法将“void”分配给隐式类型的本地变量

5

我想使用linq查询来节省几行代码。但是我遇到了一个编译错误,提示:

无法将“void”分配给隐式类型的本地变量。

var GIANTLIST = new List<string>();

var taskIds = Complaint.Tasks.Select(s => s.Task_ID).ToList().ForEach( s =>
{
    GIANTLIST.Add("<Task_ID=" + s.ToString() + ">");
});

我试图更好地理解linq查询。我知道它的返回类型是"void"?如果是这样,我如何能够将其添加到列表中呢?

4个回答

7

Foreach语句不返回任何结果,你不能将其赋值给变量。移除var taskIds:

var GIANTLIST = new List<string>();

Complaint.Tasks.Select(s => s.Task_ID).ToList().ForEach( s =>
{
    GIANTLIST.Add("<Task_ID=" + s.ToString() + ">");
});

这里有微软相关的技术文档,您可以访问https://msdn.microsoft.com/en-us/library/bwabdf9z%28v=vs.110%29.aspx 我正在尝试更好地理解Linq查询。我了解它的返回类型是“void”?如果是这样,我怎么能将其添加到列表中呢?
将此ForEach视为通常的函数ForEach(var a in MyList),它不会返回任何内容,也是一个void。在ForEach内部,您可以直接修改类的变量。

4

ForEach不是Linq的一部分,它是List类的一个方法。

保持简单易懂。

var GIANTLIST = Complaint.Tasks.Select(s => "<Task_ID=" + s.Task_ID + ">").ToList();

如果你需要向现有列表中添加项目,使用AddRange而不是ForEach

GIANTLIST.AddRange(Complaint.Tasks.Select(s => "<Task_ID=" + s.Task_ID + ">"));

2

ForEach方法返回void。你正在将void分配给taskIds。如果你想填充taskIds,请这样做:

            var GIANTLIST = new List<string>();
            var taskIds = new List<int>();
            Complaint.Tasks.Select(s => s.Task_ID).ToList().ForEach( s =>
            {
                taskIds.Add(s.TASK_ID);
                GIANTLIST.Add("<Task_ID=" + s.ToString() + ">");
            });

0

你正在尝试同时完成两件事情。将Task_ID选择到一个列表中,并将每个Task_ID添加到另一个列表中。

你可以分成两步来完成。

        var GIANTLIST = new List<string>();

        var taskIds = Complaint.Tasks.Select(s => s.Task_ID).ToList();

        taskIds.ForEach(s =>
        {
            GIANTLIST.Add("<Task_ID=" + s.ToString() + ">");
        });

或者事先初始化这两个列表,然后在ForEach循环中添加值

        var GIANTLIST = new List<string>();
        var taskIds = new List<int>();

        Complaint.Tasks.Select(s => s.Task_ID).ForEach(s =>
        {
            taskIds.Add(s);
            GIANTLIST.Add("<Task_ID=" + s.ToString() + ">");
        });

ForEach本身不返回任何内容,它只是在列表的每个对象上执行指定的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接