以下代码有什么区别?有优化的方法吗? [英] What is the difference below codes? Is there an way to optimize?
问题描述
以下代码有什么区别?哪个最好?
Hi,
What is the difference between below code? Which on is best?
// LINQ Query
objSubjectList.selectedSubjects = (from ss in db.studentSubject
join sub in db.subject on ss.subjectId equals sub.id
where ss.studentId == studentId
select new
{
sub.id,
sub.subjectName
}).AsEnumerable()
.Select(t => new subject
{
id = t.id,
subjectName = t.subjectName
}).ToList();
// Lambda Expression
objSubjectList.selectedSubjects = db.studentSubject.Join(db.subject,ss => ss.subjectId, sub => sub.id,
(ss, sub) => new { ss, sub })
.Where(m => m.ss.studentId == studentId)
.Select(c => new
{
c.sub.id,
c.sub.subjectName
}).AsEnumerable()
.Select(t => new subject
{
id = t.id,
subjectName = t.subjectName
}).ToList();
有没有办法优化lamda表达式?
谢谢
//代码
Is there any way to optimize the lamda expression?
Thanks
// code
@{
ViewBag.Title = "AssignSubjects";
}
<h2>AssignSubjects</h2>
Students: @Html.DropDownList("Student", (List<SelectListItem>)ViewData["StudentList"])
Subjects: @Html.DropDownList("Subject", (List<SelectListItem>)ViewData["SubjectList"])
<div>
<div>
<h4>UnSelected Subjects</h4>
<ul id="UnSelectedSubjects">
</ul>
</div>
<div>
<h4>Selected Subjects</h4>
<ul id="SelectedSubjects">
</ul>
</div>
</div>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script>
$(document).ready(function () {
$('#Student').bind('change', function (event) {
var stdId = $("#Student :selected").val();
var id = event.target.id;
GetSubjectList(stdId);
});
$('#UnSelectedSubjects').bind('dblclick', function (event) {
var stdId = $("#Student :selected").val();
var subId = event.target.id;
AddSubject(stdId, subId);
});
$('#SelectedSubjects').bind('dblclick', function (event) {
var stdId = $("#Student :selected").val();
var subId = event.target.id;
RemoveSubjectOfStudent(stdId, subId);
});
});
var GetSubjectList = function (stdId) {
$.ajax({
cache: false,
type: "POST",
async: "false",
url: "/Home/GetSubjectByStudent/",
data: { studentId: stdId },
dataType: "json"
}).success(function (result) {
var unSelectedSub = result.unSelectedSubjects;
var selectedSub = result.selectedSubjects;
$('#UnSelectedSubjects').html('');
$('#SelectedSubjects').html('');
for (var i = 0; i < unSelectedSub.length; i++) {
var item = unSelectedSub[i];
$('#UnSelectedSubjects').append('<li id=' + item.id + '>' + item.subjectName + '</li>')
}
for (var i = 0; i < selectedSub.length; i++) {
var item = selectedSub[i];
$('#SelectedSubjects').append('<li id=' + item.id + '>' + item.subjectName + '</li>')
}
});
};
var AddSubject = function (stdId, subId) {
$.ajax({
cache: false,
type: "POST",
async: "false",
url: "/Home/AssignSubjectToStudent/",
data: { studentId: stdId, subjectId: subId },
dataType: "json"
}).success(function (result) {
if (result == "OK") {
GetSubjectList(stdId)
}
});
};
function RemoveSubjectOfStudent(stdId, subId) {
$.ajax({
cache: false,
type: "POST",
async: "false",
url: "/Home/RemoveSubjectOfStudent/",
data: { studentId: stdId, subjectId: subId },
dataType:"json"
}).success(function (result) {
if (result == "OK") {
GetSubjectList(stdId)
}
});
}
</script>
//
public class HomeController:Controller
{
schooldbEntities db;
List< student> studentList = new List< student>();
SubjectList objSubjectList = new SubjectList();
[HttpGet]
public ActionResult RegisterStudent()
{
学生objStudent =新生();
返回查看(objStudent);
}
[HttpPost]
公共ActionResult RegisterStudent(学生objStudent)
{
试试
{
if(ModelState.IsValid)
{
using(db = new schooldbEntities())
{
db.student.Add(objStudent);
var res = db.SaveChanges();
}
}
ViewBag.Result =成功;
}
catch(例外)
{
ViewBag.Result =失败;
}
返回查看();
}
[HttpGet]
public ActionResult AddSubject( )
{
subject sub = new subject();
return View(sub);
} < br $>
[HttpPost]
public ActionResult AddSubject(subject objSubject)
{
尝试
{
if(ModelState.IsValid)
{
using(db = new schooldbEntities())
{
db.subject.Add(objSubject);
db.SaveChanges();
}
}
ViewBag.Result =成功;
}
catch(例外)
{
ViewBag.Result =失败;
}
返回查看();
}
[HttpGet]
public ActionResult AssignSubjects()
{
using(db = new schooldbEntities())
{
ViewData [StudentList] = db.student.Select(c => new {c.id,c.name})。AsEnumerable()。选择(t => new SelectListItem {Value = t.id.ToString(),Text = t.name})。ToList();
ViewData [SubjectList] = db.subject.Select(c => new {c.id,c.subjectName})。AsEnumerable()。选择(t => new SelectListItem {Value = t .id.ToString(),Text = t.subNameName}。ToList();
}
return View();
}
[HttpPost]
public ActionResult GetSubjectByStudent(int studentId)
{
使用(db = new schooldbEntities())
{
// LINQ查询
//objSubjectList.selectedSubjects =(来自db中的ss) .studentSubject
//在ss.subjectId等于sub.id的db.subject中加入sub
//其中ss.studentId == stu dentId
//选择新的
// {
// sub.id,
// sub。 subjectName
//})。AsEnumerable()
//。选择(t =>新主题
// {
// id = t.id,
// subjectName = t.subjectName
//})。ToList();
// Lambda表达式
objSubjectList.selectedSubjects = db.studentSubject.Join(db .subject,ss => ss.subjectId,sub => sub.id,
(ss,sub)=> new {ss,sub})
。在哪里(m => m.ss.studentId == studentId)
。选择(c => new
{
c .sub.id,
c.sub.subjectName
})。AsEnumerable()
。选择(t =>新主题
{
id = t.id,
subjectName = t.subjectName
})。ToList ();
var allSubjects = db.subject.ToList();
objSubjectList.unSelectedSubjects = allSubjects.Where(item =>!objSubjectList.selectedSubjects.Any(c => c.id == item.id))。ToList();
}
返回Json(objSubjectList,JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult AssignSubjectToStudent (int studentId,int subjectId)
{
string status = string.Empty;
使用(db = new schooldbEntities())
{
db.studentSubject.Add(new studentSubject {studentId = studentId,subjectId = subjectId });
db.SaveChanges();
status =OK;
}
返回Json(状态,JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult RemoveSubjectOfStudent(int studentId,int subjectId)
{
string status = string.Empty;
使用(db = new schooldbEntities())
{
var obj = db.studentSubject.Where(c => c.studentId == studentId&& c.subjectId == subjectId).FirstOrDefault();
db.studentSubject.Remove(obj);
db.SaveChanges();
status =OK;
}
返回Json(状态,JsonRequestBehavior.AllowGet); < br $>
}
}
类主题列表
{
public List< subject> unSelectedSubjects {get;组; }
public List< subject> selectedSubjects {get;组; }
}
//
< connectionstrings>
< add name =NewConnection>
connectionString =数据源=。;
初始目录= schooldb;
持久安全信息=真;
用户ID = sa;
密码= sqlproviderName =System.Data.SqlClient/>
//
//
public class HomeController : Controller
{
schooldbEntities db;
List<student> studentList = new List<student>();
SubjectList objSubjectList = new SubjectList();
[HttpGet]
public ActionResult RegisterStudent()
{
student objStudent = new student();
return View(objStudent);
}
[HttpPost]
public ActionResult RegisterStudent(student objStudent)
{
try
{
if (ModelState.IsValid)
{
using (db = new schooldbEntities())
{
db.student.Add(objStudent);
var res = db.SaveChanges();
}
}
ViewBag.Result = "Success";
}
catch (Exception)
{
ViewBag.Result = "Failed";
}
return View();
}
[HttpGet]
public ActionResult AddSubject()
{
subject sub = new subject();
return View(sub);
}
[HttpPost]
public ActionResult AddSubject(subject objSubject)
{
try
{
if (ModelState.IsValid)
{
using (db = new schooldbEntities())
{
db.subject.Add(objSubject);
db.SaveChanges();
}
}
ViewBag.Result = "Success";
}
catch (Exception)
{
ViewBag.Result = "Failed";
}
return View();
}
[HttpGet]
public ActionResult AssignSubjects()
{
using (db = new schooldbEntities())
{
ViewData["StudentList"] = db.student.Select(c => new { c.id, c.name }).AsEnumerable().Select(t => new SelectListItem { Value = t.id.ToString(), Text = t.name }).ToList();
ViewData["SubjectList"] = db.subject.Select(c => new { c.id, c.subjectName }).AsEnumerable().Select(t => new SelectListItem { Value = t.id.ToString(), Text = t.subjectName }).ToList();
}
return View();
}
[HttpPost]
public ActionResult GetSubjectByStudent(int studentId)
{
using (db = new schooldbEntities())
{
// LINQ Query
//objSubjectList.selectedSubjects = (from ss in db.studentSubject
// join sub in db.subject on ss.subjectId equals sub.id
// where ss.studentId == studentId
// select new
// {
// sub.id,
// sub.subjectName
// }).AsEnumerable()
// .Select(t => new subject
// {
// id = t.id,
// subjectName = t.subjectName
// }).ToList();
// Lambda Expression
objSubjectList.selectedSubjects = db.studentSubject.Join(db.subject,ss => ss.subjectId, sub => sub.id,
(ss, sub) => new { ss, sub })
.Where(m => m.ss.studentId == studentId)
.Select(c => new
{
c.sub.id,
c.sub.subjectName
}).AsEnumerable()
.Select(t => new subject
{
id = t.id,
subjectName = t.subjectName
}).ToList();
var allSubjects = db.subject.ToList();
objSubjectList.unSelectedSubjects = allSubjects.Where(item => !objSubjectList.selectedSubjects.Any(c => c.id == item.id)).ToList();
}
return Json(objSubjectList, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult AssignSubjectToStudent(int studentId, int subjectId)
{
string status = string.Empty;
using (db = new schooldbEntities())
{
db.studentSubject.Add(new studentSubject { studentId = studentId, subjectId = subjectId});
db.SaveChanges();
status = "OK";
}
return Json(status, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult RemoveSubjectOfStudent(int studentId, int subjectId)
{
string status = string.Empty;
using (db = new schooldbEntities())
{
var obj = db.studentSubject.Where(c => c.studentId == studentId && c.subjectId == subjectId).FirstOrDefault();
db.studentSubject.Remove(obj);
db.SaveChanges();
status = "OK";
}
return Json(status, JsonRequestBehavior.AllowGet);
}
}
class SubjectList
{
public List<subject> unSelectedSubjects { get; set; }
public List<subject> selectedSubjects { get; set; }
}
//
<connectionstrings>
<add name="NewConnection">
connectionString="Data Source=.;
Initial Catalog=schooldb;
Persist Security Info=True;
User ID=sa;
Password=sql" providerName="System.Data.SqlClient" />
//
推荐答案
(document).ready(function(){
(document).ready(function () {
('#Student')。bind('change',function(event){
var stdId =
('#Student').bind('change', function (event) { var stdId =
(#Student:selected)。val ();
var id = event.target.id;
GetSubjectList(stdId);
});
("#Student :selected").val(); var id = event.target.id; GetSubjectList(stdId); });
这篇关于以下代码有什么区别?有优化的方法吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!