Asp.net mvc 3 mvc3将匿名类型转换为ienumerable的最佳方法
我有一个模型,它使用IEnumerable在视图中使用foreach语句返回多行。问题是,我使用联接是因为我需要来自两个不同表的数据,这会将ienumerable转换为匿名类型并导致错误;我最好的办法是什么Asp.net mvc 3 mvc3将匿名类型转换为ienumerable的最佳方法,asp.net-mvc-3,ienumerable,anonymous-types,Asp.net Mvc 3,Ienumerable,Anonymous Types,我有一个模型,它使用IEnumerable在视图中使用foreach语句返回多行。问题是,我使用联接是因为我需要来自两个不同表的数据,这会将ienumerable转换为匿名类型并导致错误;我最好的办法是什么 var Ieposts = (from t in db.Threadposts join p in db.profiles on t.profileID equals p.profileID where t.threadID == id select new
var Ieposts = (from t in db.Threadposts join p in db.profiles on t.profileID equals p.profileID where t.threadID == id select new
{
firstname = p.firstname,
lastname = p.lastname,
articles = p.articlecount,
city = p.city,
state = p.state,
post = t.post
}).ToList();
我只提取我需要的字段,因为这样可以提高数据库性能。任何建议都会很好我认为您确实需要了解更多关于实体框架和Linq的知识 联接不会创建匿名类型,从匿名类型获取枚举也不会有任何问题。只需从查询中调用.AsEnumerable() 然而,我怀疑这不是你想要做的。您实际需要的是一个具体的返回类型。在这种情况下,您可能需要为此创建一个类型:
public class IEPost {
public string FirstName {get;set;}
public string LastName {get;set;}
public int Articles {get;set;}
public string City {get;set;}
public string State {get;set:}
public Post Post {get;set;}
}
然后像这样创建查询(请注意“newiepost”部分):
创建匿名类型的不是联接。这是“选择新”部分。
var Ieposts = (from t in db.Threadposts
join p in db.profiles on t.profileID equals p.profileID
where t.threadID == id select new IEPost
{
FirstName = p.firstname,
LastName = p.lastname,
Articles = p.articlecount,
City = p.city,
State = p.state,
Post = t.post
}).ToList();