我有一个模型使用IEnumerable在视图中使用foreach语句返回多行。问题是我正在使用Join,因为我需要来自2个不同表的数据,这些数据将不可数变为匿名类型并导致错误;我能解决这个问题的最好方法是什么?
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();
我只是拿出了我需要的字段,因为这会提高数据库性能。任何建议都会很棒
答案 0 :(得分:1)
我认为你真的需要更多地了解Entity Framework和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;}
}
然后你就像这样创建你的查询(注意“新的IEPost”部分):
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();