如何将Model.Tag(具有Id和名称)转换为"名称列表"?

uno*_*nom 1 c# linq asp.net asp.net-mvc

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(); 
Run Code Online (Sandbox Code Playgroud)

我将进入db上下文中Tags,我objectId通过导航属性选择所有具有集合的标签,我通过将ObjectTags两个列中的关系存储在一起的表进行设置,两者都构成一个复合键.

样本返回一个IQueryable<app.Models.Tag>.有没有快速的方法将其转换为List<string>只有Tag.Name

Jon*_*eet 5

是的,您只需要使用Select以下方法应用投影:

public List<string> TagNameList (int objectId)
{
    return db.Tags.Where(ob => ob.Id == objectId)
                  .Select(tag => tag.Name)
                  .ToList();  
}
Run Code Online (Sandbox Code Playgroud)

编辑:好的,鉴于您的更新,您可以使用,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();  
}
Run Code Online (Sandbox Code Playgroud)