Select AnonymousType 中的多个列 query.ToArray?
Select multiple columns in AnonymousType query.ToArray?
请原谅,如果这已经在某处列出,但我显然没有在 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
如何在将 转换为数组时为多列修改 select 类似于以下 :
...(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.
另外,如果有人能告诉我,什么是合适的 google 措辞因为谷歌搜索错误并没有让我得到任何看起来非常相关。
编辑:现在我已经实际提交了问题,SO 向我展示了一个边栏 link,它解释了正在发生的事情和原因,并解决了 Luizgrs 和 Servvy 的评论:
Linq to SQL select multiple columns
您有一个匿名类型序列,而不是一个字符串序列,因此您不能将 string
指定为 ToArray
的泛型参数。
要么您需要将 select
更改为实际 select 出一个 string
,或者您需要删除 ToArray
的通用参数并让匿名类型被推断为通用参数。
您误用了 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);
请原谅,如果这已经在某处列出,但我显然没有在 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
如何在将 转换为数组时为多列修改 select 类似于以下 :
...(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.
另外,如果有人能告诉我,什么是合适的 google 措辞因为谷歌搜索错误并没有让我得到任何看起来非常相关。
编辑:现在我已经实际提交了问题,SO 向我展示了一个边栏 link,它解释了正在发生的事情和原因,并解决了 Luizgrs 和 Servvy 的评论:
Linq to SQL select multiple columns
您有一个匿名类型序列,而不是一个字符串序列,因此您不能将 string
指定为 ToArray
的泛型参数。
要么您需要将 select
更改为实际 select 出一个 string
,或者您需要删除 ToArray
的通用参数并让匿名类型被推断为通用参数。
您误用了 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);