如何使用EF/LINQ(最佳方法)在asp.net中显示多条记录

如何使用EF/LINQ(最佳方法)在asp.net中显示多条记录,asp.net,Asp.net,我见过很多人以我个人认为不高效的方式显示数据记录,我遵循这些方法,但并不满意,因为我认为在应用程序生命周期的某个时刻,数据记录可能会达到巨大的数量,这样,在循环所有记录的同时,生成数据,然后将这些数据打印到浏览器会降低应用程序的执行速度和性能,例如,看看这段代码 var query2 = from m in JE.J_Posted_Jobs_Tbl join n in JE.J_Genders_Tbl on m.J_Job_Location equals n.J_Gender_ID select

我见过很多人以我个人认为不高效的方式显示数据记录,我遵循这些方法,但并不满意,因为我认为在应用程序生命周期的某个时刻,数据记录可能会达到巨大的数量,这样,在循环所有记录的同时,生成数据,然后将这些数据打印到浏览器会降低应用程序的执行速度和性能,例如,看看这段代码

var query2 = from m in JE.J_Posted_Jobs_Tbl
join n in JE.J_Genders_Tbl on m.J_Job_Location equals n.J_Gender_ID
select new { 
m.J_Job_ID,
m.J_Job_Title,
m.J_Job_Description,
m.J_Job_Package,
m.J_Job_Timing,
n.J_Gender
};


string datarow = "";  
foreach(var result in query2 ){
datarow = datarow + "<div class='eachjob'>"+
        "<a href='Employeer-Details.aspx'>"+
        "<div class='eachjobCompanyImg'>"+
"<img src='includes/images/premiummembers/premiummeber1.gif' width='60' height='60'/>"+
"</div>"+"</a>"+"<div class='eachjobName'>
<a href='Jobs-Details.aspx?J_PostedJob_ID="+result.J_Job_ID+"'>"+result.J_Job_Title+"
</a>
     </div>"+"<div class='eachjobName'>Islamabad</div>"+
            "<div class='eachjobDescription'>"+
                ""+result.J_Job_Description+""+
        "</div>"+
        "<div class='eachjobName'>"+result.J_Job_Package+"</div>"+
        "<div class='eachjobName'>"+result.J_Job_Timing+"</div>"+
        "<div class='eachjobName'>"+result.J_Gender+"</div>"+
        "<div class='eachjobFuncDiv'>"+
            "<div class='eachjobFunDivBlock'>"+
                "<div class='eachjobFunDivBlockImg'>"+
                    "<img src='includes/images/jobFunLogos/jobMarkHired.png' />"+
                "</div>"+
                "<div class='eachjobFunDivBlockName'>Mark Hired</div>"+
            "</div>"+
             "<div class='eachjobFunDivBlock'>"+
                "<div class='eachjobFunDivBlockImg'>"+
                    "<img src='includes/images/jobFunLogos/jobMakeDisApply.png' />"+
                "</div>"+
                "<div class='eachjobFunDivBlockName'>Disable Job</div>"+
            "</div>"+
        "</div></div>";
}
YourPostedJobs.InnerHtml = datarow;

is this method any efficient? If not, plz tell me an efficient way which is 
application friendly.
Thanks in advance!
var query2=来自JE.J中的m\u发布的作业\u Tbl
加入n在m.J_工作地点的JE.J_性别Tbl等于n.J_性别ID
选择新{
m、 J_Job_ID,
m、 J_职务_头衔,
m、 J_工作描述,
m、 J_Job_套装,
m、 工作时间,
n、 J_性别
};
字符串datarow=“”;
foreach(查询2中的var结果){
数据行=数据行+“”+
""+"
“+“伊斯兰堡”+
""+
“”+结果。工作描述+“”+
""+
“”+result.J_作业_包+“”+
“”+结果。作业时间+“”+
“”+结果。J_性别+“”+
""+
""+
""+
""+
""+
“马克被雇用”+
""+
""+
""+
""+
""+
“禁用作业”+
""+
"";
}
YourPostedJobs.InnerHtml=datarow;
这种方法有效吗?如果没有,请告诉我一个有效的方法
应用程序友好。
提前谢谢!

一个明显的改进是一次返回一页数据,而不是一次返回所有项目。为此,您可以在查询中使用Linq
Skip()
Take()

var query2 = from m in JE.J_Posted_Jobs_Tbl
join n in JE.J_Genders_Tbl on m.J_Job_Location equals n.J_Gender_ID

select new { 
m.J_Job_ID,
m.J_Job_Title,
m.J_Job_Description,
m.J_Job_Package,
m.J_Job_Timing,
n.J_Gender
};

var pagedQuery = q2.Skip(pageSize * (page -1)).Take(pageSize);

另一个步骤是通过连接这样的字符串来停止构建HTML。当然,返回数据并让浏览器使用javascript呈现数据会更好!或者,如果您必须像那样在服务器上构建它,至少可以使用
StringBuilder
string.Format()

非常好的回答Mike!感激