【问题标题】:Cannot implicitly convert type 'Anonymous Type#1[]' to 'int[]'无法将类型“匿名类型#1[]”隐式转换为“int[]”
【发布时间】:2016-01-11 02:24:39
【问题描述】:

我在以下场景中尝试使用分组方法获取数据库详细信息

  //Gets MulitCourseIds from db of selected CourseIds 
        int[] _hasListCourseIds = (from mcd in _db.MultiCourseDetails
                                 where _lstCourseIds.Contains(mcd.CourseId.Value)
                                 group mcd.MultiCourseId by mcd.MultiCourseId into g
                                 select new { multiCourseId = g.Key }).ToArray();
                                   ************  error is occuring here**********

        if (_hasListCourseIds.Count > 0)
        {
            //Checks the count of courseIds from the db and selected courseIds
            foreach (var _multiCourseId in _hasListCourseIds)
            {                  
                var _courseCount = _db.MultiCourseDetails                                       
                                    .Where(x => x.MultiCourseId == _multiCourseId )
                                    .Count();
                if (_courseCount == _lstCourseIds.Count)
                {
                    return true;
                }
            }

我收到错误

无法将类型 'Anonymous Type#1[]' 隐式转换为 'int[]'

也欢迎任何改进代码的建议..

【问题讨论】:

  • 如果你不关心类型,使用var而不是int[]
  • sorry mate cast 是必需的,因为我使用它来检查内部循环,如问题所示..
  • g.Key 已经是int 不是吗?所以匿名类型也会有一个int

标签: c# entity-framework linq asp.net-mvc-4 anonymous-types


【解决方案1】:

问题是您正在投影 anonymous 类型,但将其分配给 int 数组。由于您只投影一个属性,因此此处不需要匿名类型:-

  int[] _hasListCourseIds = (from mcd in _db.MultiCourseDetails
                             where _lstCourseIds.Contains(mcd.CourseId.Value)
                             group mcd.MultiCourseId by mcd.MultiCourseId into g
                             select g.Key).ToArray();

我假设MultiCourseId 是int。

【讨论】:

  • MultiCourseId 是nullable int,所以我将int[] _hasListCourseIds 更改为int?[] _hasListCourseIds。如果您可以发布如何执行上述场景会很有帮助anonymous type 是必需的..:)
  • @ksg - 嘿,没听明白 - “如果你能发布如何执行上述场景,那将会很有帮助”。你想存储匿名类型吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多