关于IEnumerable或IList的foreach

Sye*_*idi 6 c# linq

我正在使用LINQ with Entity框架来连接三个表,我正在返回IList接口.

我想foreach在这个返回值上应用循环,这样我就可以在我的模型中填充值.

这就是我加入的方式:

public IList GetData(long Id)
{
    //var q = dataContext.tblUsers.AsEnumerable().Join(dataContext.tblUsersProfiles.AsEnumerable(),)
    var query = from u in dataContext.tblUsers
    join p in dataContext.tblUsersProfiles on u.ProfileId equals p.Id
    join c in dataContext.tblComments on u.Id equals c.Commentedby

    where c.Id == Id
    select new { u.Firstname, u.Lastname, p.ProfilePicPath, c.Comment, c.CommentDate };

    return query.ToList();
}
Run Code Online (Sandbox Code Playgroud)

我想在我的模型列表中填充这些值.我试过这个:

var lst = repository.GetDate(Id);
foreach (var item in lst)
{

}
Run Code Online (Sandbox Code Playgroud)

但我无法访问项目Firstname/ Lastname

我也试过使用对象item,object[] item但他们都没有工作.

我如何申请for每个onIList?

它会正常工作如果我能够返回DataTable而不是IList在这种情况下.

Ali*_*yan 7

您正在创建匿名类型.只需为查询结果定义一个类,然后函数的返回类型应如下所示:

public IList<YourClassName> GetData(long Id)
{

}
Run Code Online (Sandbox Code Playgroud)

最后设置类值:

select new YourClassName 
{
    Firstname = u.Firstname,
    Lastname = u.Lastname, 
    ProfilePicPath = p.ProfilePicPath,
    Comment = c.Comment,
    CommentDate = c.CommentDate
};
Run Code Online (Sandbox Code Playgroud)