DBContext基礎查詢


https://www.cnblogs.com/gosky/p/5752001.html

遍歷所有實體

復制代碼
//遍歷所有學生 DBSet
using (var db = new Entities())
{
    foreach (var student in db.Student)
    {
        ObjectDumper.Write(student.StudentName);
    }
};
復制代碼

說明:打印所有學生的姓名

根據條件查詢

復制代碼
using (var db = new Entities())
{
    //查詢所有出生日期在1991年1月1日之后的學生
    var day = Convert.ToDateTime("1991-1-1");
    var students = from v in db.Student where v.Birthday >= day select v;
    foreach (var student in students)
    {
        ObjectDumper.Write(student.StudentName+"-"+student.Birthday);
    }
};
復制代碼

執行結果:

此處注意:使用linq和lamba時,變量一定要提前轉存,不能在linq內部使用C#函數。

錯誤的寫法:

復制代碼
using (var db = new Entities())
{
    var students = from v in db.Student where v.Birthday >= Convert.ToDateTime("1991-1-1") select v;
    foreach (var student in students)
    {
        ObjectDumper.Write(student.StudentName+"-"+student.Birthday);
    }
};
復制代碼

這樣寫直接就會報錯:

按照生日排序 升序排列(默認)

復制代碼
using (var db = new Entities())
{
    var students = from v in db.Student
                    orderby v.Birthday
                    select v;
    foreach (var student in students)
    {
        ObjectDumper.Write(student);
    }
};
復制代碼

降序:descending

var students = from v in db.Student
                orderby v.Birthday descending
                select v;

查詢單個實體 Find方法

復制代碼
//find查詢單個實體
using (var db = new Entities())
{
    var student = db.Student.Find(1);
    ObjectDumper.Write(student);
};
復制代碼

說明:根據主鍵查詢Student信息,如果找不到,則返回 NULL

查詢單個實體 Single方法

復制代碼
//Single查詢單個實體
using (var db = new Entities())
{
    var student = from v in db.Student
                    where v.StudentName=="張三"
                    select v;
    //single方法 查不到記錄 或者 多條記錄 都會報錯
    ObjectDumper.Write(student.Single());
};
復制代碼

說明:調用single方法查不到記錄 或者 多條記錄 都會報錯

查詢單個實體 SingleOrDefault方法

復制代碼
//SingleOrDefault查詢單個實體
using (var db = new Entities())
{
    var student = from v in db.Student
                    where v.StudentName == "李四"
                    select v;
    //SingleOrDefault方法 查不到記錄返回null ,如果查詢到多條記錄會報錯
    ObjectDumper.Write(student.SingleOrDefault());
};
復制代碼

說明:調用SingleOrDefault方法 查不到記錄放回NULL 如果查詢到多條記錄報錯

 

完整案例:

復制代碼
//遍歷所有學生
            using (var db = new Entities())
            {
                var students = from v in db.Student select v;
                foreach (var student in students)
                {
                    ObjectDumper.Write(student);
                }
            };

            Console.WriteLine("==========按照生日排序===========");
            //按照生日排序 升序
            using (var db = new Entities())
            {
                var students = from v in db.Student
                                orderby v.Birthday descending
                                select v;
                foreach (var student in students)
                {
                    ObjectDumper.Write(student);
                }
            };

            Console.WriteLine("==========find查詢單個實體===========");
            //find查詢單個實體
            using (var db = new Entities())
            {
                var student = db.Student.Find(1);
                ObjectDumper.Write(student);
            };

            Console.WriteLine("==========single查詢單個實體===========");
            //Single查詢單個實體
            using (var db = new Entities())
            {
                var student = from v in db.Student
                                where v.StudentName=="張三"
                                select v;
                //single方法 查不到記錄 或者 多條記錄 都會報錯
                ObjectDumper.Write(student.Single());
            };

            Console.WriteLine("==========SingleOrDefault查詢單個實體===========");
            //SingleOrDefault查詢單個實體
            using (var db = new Entities())
            {
                var student = from v in db.Student
                                where v.StudentName == "李四"
                                select v;
                //SingleOrDefault方法 查不到記錄返回null ,如果查詢到多條記錄會報錯
                ObjectDumper.Write(student.SingleOrDefault());
            };
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM