LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式

skystore 2014-04-12 06:41:03
我使用了linq to entity 分组查询 , 结果不知道怎么转换结果,toString() 后报错

源码:

var images = from img in db.Images
where img.UserId == user.UserId
group img by img.GalleryId into g
select new {
GalleryId = g.Key,
Title = g.OrderBy( t => t.ImageId ).Take(1).ToString(),
Description = g.OrderBy(t => t.ImageId).Take(1).ToString(),
Path = g.OrderBy(t => t.ImageId).Take(1).ToString(),
ImageId = Convert.ToInt32(g.OrderBy( t=> t.ImageId).Take(1))
};


          
怎么遍历 images, 想给Photo 类赋值, 运行时报错LINQ to Entities 不识别方法“System.String ToString()”,,该怎么办?
foreach (var img in imgages)
{
int k = i % 3;
if( k ==0 ){
list1.Add(new Photo { Description = img.Description, ImageId = img.ImageId, GalleryId = img.GalleryId,
Path = img.Path, column = k, PhotoNum = photoNum, Title = img.Title});
}


Photo 类:

/// <summary>
/// 相册模型
/// </summary>
public class Photo
{
[Key]
public int ImageId { get; set; }

public int PhotoNum { get; set; }

public string Title { get; set; }

public string Description { get; set; }

public string Path { get; set; }

public int UserId { get; set; }

public int column { get; set; }

public int GalleryId { get; set; }
}

...全文
6057 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2014-04-14
  • 打赏
  • 举报
回复
你的错误在于:
group by.. into g后,g是个集合,
g.OrderBy( t => t.ImageId ).Take(1) 这是取集合内的第一个对象, 不应该针对对象进行 tostring()操作

var images = from img in db.Images
where img.UserId == user.UserId
group img by img.GalleryId into g
let x=g.OrderBy(t => t.ImageId ).Take(1)
select new {
GalleryId = g.Key,
Title = x.Title,
Description =x.Description,
Path = x.Path,
ImageId =x.ImageId
};
threenewbee 2014-04-12
  • 打赏
  • 举报
回复
var images = (from img in db.Images where img.UserId == user.UserId group img by img.GalleryId into g select g).AsEnumerable().Select(g => new { GalleryId = g.Key, Title = g.OrderBy( t => t.ImageId ).Take(1).ToString(), Description = g.OrderBy(t => t.ImageId).Take(1).ToString(), Path = g.OrderBy(t => t.ImageId).Take(1).ToString(), ImageId = Convert.ToInt32(g.OrderBy( t=> t.ImageId).Take(1)) });

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧