[英]How can i convert a Model.Tag (has Id and Name) to a “List of” Name?
public List<string> TagNameList (int objectId)
{
List<string> tagNameList = db.Tags.Where(ob => ob.Id == objectId).ToList();
}
db.Tags.Where(ob => ob.Id == objectId).ToList();
我将进入“ Tags
的db
上下文,并通过一个导航属性选择所有具有设置的objectId
的标签,我已通过一个ObjectTags
表进行了设置,该表将关系存储在两列中,两者均构成一个组合键。
该示例返回一个IQueryable<app.Models.Tag>
。 是否有任何快速方法可以将其仅使用Tag.Name
转换为List<string>
?
是的,您只需要使用Select
来应用投影:
public List<string> TagNameList (int objectId)
{
return db.Tags.Where(ob => ob.Id == objectId)
.Select(tag => tag.Name)
.ToList();
}
编辑:好的,给定您的更新,如果您只想要每个集合中的第一个对象,则可以使用First()
-如果您想要集合中每个对象的名称,则可以使用SelectMany
:
public List<string> TagNameList (int objectId)
{
return db.Tags.Where(ob => ob.Id == objectId)
.SelectMany(ob => ob.Tags)
.Select(tag => tag.Name)
.ToList();
}
感谢一位好朋友找到了解决方案。
db.Objects.Where(ob => ob.Id == objectId).First().Tags.Select(t => t.TagName).ToList()
First()对于将其“缩小”到一个对象然后导航到另一个表是必不可少的。
这太酷了。 您可以像这样导航到数十个表。 我想知道您是否可以通过这种方式编写最长的代码行:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.