Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 mvc3将匿名类型转换为ienumerable的最佳方法_Asp.net Mvc 3_Ienumerable_Anonymous Types - Fatal编程技术网

Asp.net mvc 3 mvc3将匿名类型转换为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

我有一个模型,它使用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
                    {
                       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();