C# 如何将Model.Tag(具有Id和名称)转换为";名单;名称 公共列表标记名列表(int objectId) { List tagNameList=db.Tags.Where(ob=>ob.Id==objectId.ToList(); } 其中(ob=>ob.Id==objectId.ToList();

C# 如何将Model.Tag(具有Id和名称)转换为";名单;名称 公共列表标记名列表(int objectId) { List tagNameList=db.Tags.Where(ob=>ob.Id==objectId.ToList(); } 其中(ob=>ob.Id==objectId.ToList();,c#,asp.net,asp.net-mvc,linq,C#,Asp.net,Asp.net Mvc,Linq,我将进入Tags中的db上下文,通过导航属性选择所有设置了objectId的标签,我通过ObjectTags表设置了导航属性,该表在两列中存储了关系,这两列都构成了一个组合键 该示例返回一个IQueryable。是否有任何快速的方法可以将其转换为仅使用标记的列表?是的,您只需使用选择应用投影即可: public List<string> TagNameList (int objectId) { List<string> tagNameList = db.Tags.

我将进入
Tags
中的
db
上下文,通过导航属性选择所有设置了
objectId
的标签,我通过
ObjectTags
表设置了导航属性,该表在两列中存储了关系,这两列都构成了一个组合键


该示例返回一个
IQueryable
。是否有任何快速的方法可以将其转换为仅使用
标记的
列表

是的,您只需使用
选择应用投影即可:

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(); 

是的,您只需要使用
选择
应用投影:

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(); 

多亏了一位好朋友才找到了解决方案

public List<string> TagNameList (int objectId)
{
    return db.Tags.Where(ob => ob.Id == objectId)
                  .SelectMany(ob => ob.Tags)
                  .Select(tag => tag.Name)
                  .ToList();  
}
First()对于将其“缩小”到一个对象,然后导航到另一个表是必不可少的


这太酷了。您可以导航到几十个这样的表。我想知道你是否可以用这种方式编写最长的代码行:多亏了一位好朋友,D

找到了解决方案

public List<string> TagNameList (int objectId)
{
    return db.Tags.Where(ob => ob.Id == objectId)
                  .SelectMany(ob => ob.Tags)
                  .Select(tag => tag.Name)
                  .ToList();  
}
First()对于将其“缩小”到一个对象,然后导航到另一个表是必不可少的


这太酷了。您可以导航到几十个这样的表。我想知道你是否可以这样写最长的代码行:D

不要那么快…:)我有一个包含多个objectid和多个tagid的关系表。我无法直接访问relationships表,因为它没有出现在ADO.net中。我只能通过对象表访问它。类似这样的db.Objects.Where(ob=>ob.Id==objectId)。选择(t=>t.Tags)我将进入Objects表并缩小范围,然后在Tags表中选择stuff。现在我有一堆实体集合。如何将它们转换为列表或传递给视图的模型中可用的内容?编辑了更多信息:我有一个包含多个objectid和多个tagid的关系表。我无法直接访问relationships表,因为它没有出现在ADO.net中。我只能通过对象表访问它。类似这样的db.Objects.Where(ob=>ob.Id==objectId)。选择(t=>t.Tags)我将进入Objects表并缩小范围,然后在Tags表中选择stuff。现在我有一大堆……我可以不那么快……:)我有一个包含多个objectid和多个tagid的关系表。我无法直接访问relationships表,因为它没有出现在ADO.net中。我只能通过对象表访问它。类似这样的db.Objects.Where(ob=>ob.Id==objectId)。选择(t=>t.Tags)我将进入Objects表并缩小范围,然后在Tags表中选择stuff。现在我有一堆实体集合。如何将它们转换为列表或传递给视图的模型中可用的内容?编辑了更多信息:我有一个包含多个objectid和多个tagid的关系表。我无法直接访问relationships表,因为它没有出现在ADO.net中。我只能通过对象表访问它。类似这样的db.Objects.Where(ob=>ob.Id==objectId)。选择(t=>t.Tags)我将进入Objects表并缩小范围,然后在Tags表中选择stuff。现在我有一堆…我可以