小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linq 下的擴(kuò)展方法太少了,您期待的 MoreLinq 來啦

 行者花雕 2021-03-17

一:背景

1. 講故事

前幾天看同事在用 linq 給內(nèi)存中的兩個(gè) model 做左連接,用過的朋友都知道,你一定少不了一個(gè)叫做 DefaultIfEmpty 函數(shù),這玩意吧,本來很流暢的 from...in...join, 突然搞進(jìn)來這么一個(gè)函數(shù),真的是惡心他媽給惡心開門,惡心到家了,簡化后的代碼如下:


    class User
    {
        public int UserID { get; set; }
        public string Email { get; set; }
    }

    class Order
    {
        public int OrderID { get; set; }
        public string OrderTitle { get; set; }
        public int UserID { get; set; }
    }

    static void Main(string[] args)
    {
         var userList = new List<User>()
            {
                new User(){ UserID=1, Email="333@qq.com"},
                new User(){ UserID=2, Email="444@qq.com"},
            };

            var orderList = new List<Order>()
            {
                new Order(){ OrderID=1, OrderTitle="訂單1", UserID=1},
                new Order(){ OrderID=2, OrderTitle="訂單2", UserID=1}
            };

            var query = from u in userList
                        join o in orderList on u.UserID equals o.UserID into grp
                        from item in grp.DefaultIfEmpty()
                        select new { UserID = u.UserID, OrderTitle = item?.OrderTitle };       
    }    

之所以出現(xiàn)這個(gè)情況是因?yàn)椴还苁?查詢關(guān)鍵詞 還是 擴(kuò)展方法,都并沒有直接對(duì) leftjoin 和 rightjoin 底層支持,只能通過變通的方式去實(shí)現(xiàn),這就很尷尬了,比如說上面的這段代碼,你很難在多天之后還能準(zhǔn)確理解這里的 DefaultIfEmpty 是用來干嘛的,那現(xiàn)在問題的關(guān)鍵在于,有沒有什么方法讓底層支持或者有可信的第三方幫我封裝好,還真巧,在 github 上 還真有一個(gè) morelinq 項(xiàng)目:https://github.com/morelinq/MoreLINQ 看 md 是給 Enumerable 擴(kuò)展了 60,70 個(gè)方法,如虎添翼呀,接下來一起來探索下吧。

二: MoreLinq 下的探索

1. 安裝

安裝非常簡單,用 nuget 跑一下 Install-Package morelinq -Version 3.3.2 即可。

2. LeftJoin / RightJoin / FullJoin

在 morelinq 中就提供了 左外,右邊,全連接,這就很

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多