繁体   English   中英

如何将Model.Tag(具有ID和名称)转换为“名称列表”?

[英]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(); 

我将进入“ Tagsdb上下文,并通过一个导航属性选择所有具有设置的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM