中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將(jiang)不確(que)定變(bian)為(wei)確(que)定~Linq-Distinct()方法是(shi)否可以對復雜結果集進行去重?

回到目錄

linq中(zhong)也有像T—SQL的distinct方法(fa),可以將重(zhong)復的結(jie)果集去重(zhong),以下是我們使用 distinct()時需要注意的地方:

1 distinct去重(zhong)記錄要(yao)求每個(ge)字段都重(zhong)復時,才算重(zhong)復對(dui)象,這與T—SQL保持(chi)一(yi)至

2 disinct語(yu)句與orderby語(yu)句可以放在一起使(shi)用(yong),對彼此不產生影響

3 distinct是(shi)在數據庫端進行(xing)的(de)操(cao)作,即,你在linq中的(de)distinct與T-SQL的(de)distinct效果一樣,不會產生性能問題

4 distinct的數(shu)據(ju)集(ji)中(zhong)不能(neng)有復雜對象,如(ru)果出現List<T>這種引用類(lei)型(xing),那(nei)LINQ在解釋成T—SQL時,將(jiang)會把(ba)distinct()去掉(diao),從而使去重操(cao)作失效

實例:

 1   DataClasses1DataContext db = new DataClasses1DataContext();
 2             var linq = from _data in db.Res_Item
 3                        join data2 in db.Res_ItemCategory on _data.ID equals data2.ItemID
 4                        join data3 in db.Res_ItemPrice on _data.ID equals data3.ItemID into list
 5                        select new Res_Item_Ext
 6                        {
 7                            ID = _data.ID,    //列說明(ming): 產品編號
 8                            Name = _data.Name,    //列說明(ming): 商品名(ming)稱
 9                            Res_ItemPrice=list.ToList(),
10                        };
11             var linq2 = linq.Where(i => i.ID == 5104).OrderBy(i => i.ID).Distinct().ToList();
12             linq2.ForEach(i => Console.WriteLine(i.ID + i.Name));

 

由(you)于在結果集中出現(xian)List<T>這種復雜類型(xing),所以distinct()操作失效,如圖:

如果(guo)在結果(guo)集中沒(mei)有(you)復雜類型Res_ItemPrice屬(shu)性,那distinct()語句會生(sheng)效

結果是正確的:

回到目錄

posted @ 2012-09-25 11:02  張占嶺  閱讀(3072)  評論(1)    收藏  舉報