本文介绍了在LINQ查询中调用自定义方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的查询:
var q = from u in db.User select new { userId = u.UserId, userName = o.Name, userAvatar = o.AvatarCode };然后,我必须将 AvatarCode 转换为 AvatarPath 使用自定义静态方法 Image.GetPath 。
Then, I have to transform AvatarCode to AvatarPath using custom static method Image.GetPath.
可以通过以下方式进行设置:
It's possible to make this in the following way:
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) };但是如果对象字段的数量很大,那么在第二个选择中复制所有字段是一个过分。
But if the number of object fields is large then it's an overkill to duplicate all fields in the second Select.
有没有其他选择?
例如,一些方法来标记应该执行的方法查询执行离子:
For example, some approach to mark methods that should be executed after query execution:
var q = from u in db.User select new { userId = u.UserId, userName = o.Name, userAvatar = Linq.ExecuteLater(Image.GetPath(o.AvatarCode)) };推荐答案
没有任何这样的方法,但如果问题是只能在第二次选择中再次指定的字段数量可以这样做:
There is not any such method but if the problem is only number of fields which must be specified again in the second select you can do something like this:
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) });更多推荐
在LINQ查询中调用自定义方法
发布评论