以下代码有什么区别?有优化的方法吗? [英] What is the difference below codes? Is there an way to optimize?

查看:58
本文介绍了以下代码有什么区别?有优化的方法吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





以下代码有什么区别?哪个最好?



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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆