EF 更新操作 lambda解釋+=


我曾寫過一個EF批量更新、刪除的博客,后來操作的過程中經常遇到更新字段,但是要在原來的基礎上計算的情況,我就先去獲取一遍數據然后再計算,最后再去更新,顯然這個操作是很復雜的

 

var guest = dbContext.Guest.Where(g => g.ID == ID);
if (guest.FirstOrDefault() != null)
{
    var balance = guest.FirstOrDefault().Balance + price;
    guest.Update(g => new Guest { Balance = balance });
}

經過分析我發現在update針對的對象時where 查詢出來的,那我就可以操作查詢出來的東西,並且在update 的時候也有e ,Lambda 的簡寫用的多了都忘記了它本身復雜情況的語法了,明白了之后那就很簡單了,我可以直接操作e.money 

public void TextForZK()
        {
            using (var dbContext = new FMDbContext())
            {
                //更新e.money 
                dbContext.Expenditure.Where(e => e.ID == 1).Update(e => new Expenditure { Money = e.Money + 1 });
            }
        }

細思極恐 ,想一想 "Lambda表達式"是一個匿名函數,是一種高效的類似於函數式編程的表達式

Lambda簡化了匿名委托的使用,減少開發中需要編寫的代碼量。
具體內容:它可以包含表達式和語句,並且可用於創建委托或表達式目錄樹類型,支持帶有可綁定到委托或表達式樹的輸入參數的內聯表達式。
寫法:所有Lambda表達式都使用Lambda運算符=>,該運算符讀作"goes to"。Lambda運算符的左邊是輸入參數(如果有),右邊是表達式或語句塊。Lambda表達式x => x * x讀作"x goes to x times x"。
 
簡單介紹一下方便理解
利用委托處理方法:
//委托  逛超市
        delegate int GuangChaoshi(int a);
        static void Main(string[] args)
        {
            GuangChaoshi gwl = JieZhang;
            Console.WriteLine(gwl(10) + "");   //打印20,委托的應用
            Console.ReadKey();
        }
        
        //結賬
        public static int JieZhang(int a)
        {
            return a + 10;
        }

利用lambda表達式處理方法:

//委托  逛超市
        delegate int GuangChaoshi(int a);
        static void Main(string[] args)
        {          
           // GuangChaoshi gwl = JieZhang;
            GuangChaoshi gwl = p => p + 10;
            Console.WriteLine(gwl(10) + "");   //打印20,表達式的應用
            Console.ReadKey();
        }

是不是理解了,哈哈哈,我對自己無語了,想想以前寫的代碼,感覺自己弱爆了!

 


免責聲明!

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



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