我如何使用 linq join 函数结果从 razor view 插入到 viewbag 中?
How can i use the linq join function result inserted in a viewbag from razor view?
如何使用 linq join 函数结果从 razor view 插入到 viewbag 中?
在下面的代码中,我尝试将 ViewBag.photos
中的照片列表设置为在 ViewPage
Razor 页面中使用它。
var result = photos.Join(projects, (pho => pho.ProjectID), (pro => pro.ProjectID), ((pho, pro) => new { photos = pho })).ToList();
ViewBag.photos = result;
当我尝试在视图页面中使用 ViewBag.photos
时,给我一些错误。
<div class="col-lg-3 col-sm-6 col-md-6" data-aos="fade-up" data-aos-delay="60">
@foreach (var item in (IEnumerable<Wenar.Models.DomainModel.Photo>) ViewBag.photos)
{
<img src="~/ProjectPhotos/@item.Photo1;" />
}
</div>
提到的错误是:
$exception {"Unable to cast object of type
'System.Collections.Generic.List1[<>f__AnonymousType6
1[Wenar.Models.DomainModel.Photo]]'
to type
'System.Collections.Generic.IEnumerable`1[Wenar.Models.DomainModel.Photo]'."} System.InvalidCastException
您需要创建 Wenar.Models.DomainModel.Photo
类型的对象列表,您可以使用 Select
方法:
... ((pho, pro) => new { photos = pho }))
.Select(s => new Wenar.Models.DomainModel.Photo{ photoId = s.photoId, photoName = s.photoName })
.ToList();
您使用查询创建的 objects 是 anonymous type - new { photos = pho }
.
如果您想使用 Photo
类型的 collection,您需要将查询更改为
var result = photos
.Join(projects, (pho => pho.ProjectID), (pro => pro.ProjectID), ((pho, pro)
=> new Photo() { photos = pho }))
.ToList();
您无需将 collection 转换为 IEnumerable
即可在其上使用 foreach
,也无需调用 ToList()
您的查询是否只需要 foreach
collection.
如何使用 linq join 函数结果从 razor view 插入到 viewbag 中?
在下面的代码中,我尝试将 ViewBag.photos
中的照片列表设置为在 ViewPage
Razor 页面中使用它。
var result = photos.Join(projects, (pho => pho.ProjectID), (pro => pro.ProjectID), ((pho, pro) => new { photos = pho })).ToList();
ViewBag.photos = result;
当我尝试在视图页面中使用 ViewBag.photos
时,给我一些错误。
<div class="col-lg-3 col-sm-6 col-md-6" data-aos="fade-up" data-aos-delay="60">
@foreach (var item in (IEnumerable<Wenar.Models.DomainModel.Photo>) ViewBag.photos)
{
<img src="~/ProjectPhotos/@item.Photo1;" />
}
</div>
提到的错误是:
$exception {"Unable to cast object of type 'System.Collections.Generic.List
1[<>f__AnonymousType6
1[Wenar.Models.DomainModel.Photo]]' to type 'System.Collections.Generic.IEnumerable`1[Wenar.Models.DomainModel.Photo]'."} System.InvalidCastException
您需要创建 Wenar.Models.DomainModel.Photo
类型的对象列表,您可以使用 Select
方法:
... ((pho, pro) => new { photos = pho }))
.Select(s => new Wenar.Models.DomainModel.Photo{ photoId = s.photoId, photoName = s.photoName })
.ToList();
您使用查询创建的 objects 是 anonymous type - new { photos = pho }
.
如果您想使用 Photo
类型的 collection,您需要将查询更改为
var result = photos
.Join(projects, (pho => pho.ProjectID), (pro => pro.ProjectID), ((pho, pro)
=> new Photo() { photos = pho }))
.ToList();
您无需将 collection 转换为 IEnumerable
即可在其上使用 foreach
,也无需调用 ToList()
您的查询是否只需要 foreach
collection.