我有这样的查询:
var q =
from u in db.User
select new
{
userId = u.UserId,
userName = o.Name,
userAvatar = o.AvatarCode
};
然后,我必须使用自定义静态方法 Image.GetPath 将 AvatarCode 转换为 AvatarPath 。
可以通过以下方式实现:
var q =
(from u in db.User
select new
{
userId = u.UserId,
userName = o.Name,
userAvatar = o.AvatarCode
})
.AsEnumerable()
.Select(new
{
userId = u.UserId,
userName = o.Name,
userAvatar = Image.GetPath(o.AvatarCode)
};
但是如果对象字段的数量很大,那么复制第二个选择中的所有字段就太过分了。
还有其他选择吗?
例如,一些标记应在查询执行后执行的方法的方法:
var q =
from u in db.User
select new
{
userId = u.UserId,
userName = o.Name,
userAvatar = Linq.ExecuteLater(Image.GetPath(o.AvatarCode))
};
答案 0 :(得分:0)
没有任何此类方法,但如果问题只是在第二个选择中必须再次指定的字段数,则可以执行以下操作:
var q =
(from u in db.User
select new
{
userId = u.UserId,
userName = u.Name,
userAvatar = u.AvatarCode
})
.AsEnumerable()
.Select(u => new
{
User = u,
Path = Image.GetPath(u.AvatarCode)
});