请原谅,如果已在某处列出,但我显然未能在Google搜索中正确说出这一点,而且我发现类似,没有任何内容涉及我需要的ToArray
部分(这是我遇到问题的地方)......
给出以下代码:
return Json(string.Join(",", (from EducationCourse in db.Courses
join EventsPackageCourse in db.PackageCourses on EducationCourse.CourseID equals EventsPackageCourse.CourseID
join EventsPackage in db.Packages on EventsPackageCourse.PackageID equals EventsPackage.PackageID
where EventsPackage.EventID == eventID
select EducationCourse.Name).ToArray<string>()),
JsonRequestBehavior.AllowGet);
方法的返回类型为JsonResult
如何修改多列的选择,类似于以下,同时将其转换为数组:
...(etc)...
select ( new { EducationCourse.Name, EvenetsPacakgeCourse.StartDate, EventsPacakageCourse.EndDate})).ToArray<string()),
....
正如我所写(如上所述),它会产生错误:
'System.Linq.IQueryable<AnonymousType#1>' does not contain a definition for 'ToArray' and the best extension method overload 'System.Linq.ParallelEnumerable.ToArray<TSource>(System.Linq.ParallelQuery<TSource>)' has some invalid arguments.
此外,如果有人会非常棒地告诉我,那么谷歌的措辞是什么,因为谷歌搜索错误并不能让我得到任何看似非常相关的信息。
编辑:现在我已经提交了这个问题了,所以我正在向我展示一个侧边栏链接,它解释了Luizgrs和Servvy的注意事项以及原因和解决方案:
答案 0 :(得分:1)
您有一系列匿名类型,而不是一系列字符串,因此您无法将string
指定为ToArray
的通用参数。
您需要更改select
以实际选择string
,或者您需要删除ToArray
的泛型参数并将匿名类型推断为通用参数
答案 1 :(得分:1)
你误导了Controller.Json
方法。
它已经将您传递的对象序列化为参数,因此您无需将其转换为字符串。
这样做:
return Json((from EducationCourse in db.Courses
join EventsPackageCourse in db.PackageCourses on EducationCourse.CourseID equals EventsPackageCourse.CourseID
join EventsPackage in db.Packages on EventsPackageCourse.PackageID equals EventsPackage.PackageID
where EventsPackage.EventID == eventID
select new { EducationCourse.Name, EvenetsPacakgeCourse.StartDate, EventsPacakageCourse.EndDate}),
JsonRequestBehavior.AllowGet);