c# - 无法将 void 分配给隐式类型的局部变量

标签 c# linq entity-framework linq-to-entities compiler-errors

var query = rep.GetIp()  // in this line i have the error
           .Where(x => x.CITY == CITY)
           .GroupBy(y => o.Fam)
           .Select(z => new IpDTO
                        {
                            IId = z.Key.Id,
                            IP = z.Select(x => x.IP).Distinct()
                        })
           .ToList().ForEach(IpObj => IpObj.IP.ToList().ForEach(ip => PAINTIP(ip)));

当我运行这段代码时出现错误:

Cannot assign void to an implicitly-typed local variable

我谷歌了一下,发现这是一个类型问题,因为 foreach 不是 LINQ 函数?我不明白 void 在哪里!

最佳答案

  • ForEach()类型为 void .

  • Select()返回 IEnumerable<T> , ToList()返回 List<T>

所以:

List<X> x = ...Select(x => x).ToList(); // List<T>

x.ForEach(x => x); // void

因为你不能分配 voidList<T> .


var query = rep.GetIp()  // in this line i have the error
           .Where(x => x.CITY == CITY)
           .GroupBy(y => o.Fam)
           .Select(z => new IpDTO
                        {
                            IId = z.Key.Id,
                            IP = z.Select(x => x.IP).Distinct()
                        });

foreach (var dto in query)
{
    foreach (var ip in dto.IP)
    {
        PAINTIP(ip);
    }
}

var query = ....
           .SelectMany(z => z.Select(x => x.IP).Distinct());

foreach (var ip in query)
{
    PAINTIP(ip);
}

关于c# - 无法将 void 分配给隐式类型的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8242805/

相关文章:

c# - 如何将匿名类型对象发送到方法

c# - 将导航属性从 Entity Framework 迁移到外键

.net - VS2017 Entity Framework 无法为此请求检索数据

c# - "Access to the path ... is denied"(.NET C#)

c# - 在不弄乱代码的情况下编写委托(delegate)

c# - 具有序列 id 的 Linq 汇总

c# - Linq 用整数列表连接对象列表

sql-server - 有没有一种方法可以仅覆盖 Entity Framework 中的删除存储过程

c# - TeamCity 8 中的 DotCover 不起作用

c# - Visual Studio 2010 插件 - 向编辑器窗口添加上下文菜单