使用linq对包含子字符串的表进行分组
我的数据表(DeviceInfo):
ID | OS | 设备 ----------------------------------------------- 1 | Android 2.2 | 三星 2 | Linux / Android 4.2 | LG 3 | Linux / Android 4.4.2 | HTC 4 | Android 3.2 | 三星 5 | Android 3.0 | 摩托罗拉 6 | iOS 7.1.2 | iPad的 7 | iOS 8.0 | iPhone 6 8 | iOS 6.1.6 | iPhone 4
我想用Android和ios用户使用Linq对这个表进行分组。实际上我必须使用子串“Android”和“iOS”对表进行分组。
我的输出应该是
ID | 用户| 计数 ---------------------------- 1 | Android | 五 2 | iOS | 3
如何使用linq获取此表?
你可以尝试这样的事情:
// db is my datacontext var groupByOS = (from c in (from d in db.DeviceInfo where d.Os.ToUpper().Contains("ANDROID") || d.Os.ToUpper().Contains("IOS") group d by new { d.Os } into dev select new { User = dev.Key.Os.ToUpper().Contains("ANDROID") ? "Android" : "iOS", DeviceCount = dev.Count() }) group c by new { c.User } into newgrp select new { newgrp.Key.User, Count = newgrp.Sum(q => q.DeviceCount) }).ToList();
试试这个:(我用过Console App,你可以根据你的需求改变它。): –
上述就是C#学习教程:使用linq对包含子字符串的表进行分组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var query = from device in deviceInfo where device.OS.Contains("Android") || device.OS.Contains("iOS") group device by new { Android = device.OS.Contains("Android"), iOS = device.OS.Contains("iOS") } into deviceGroup select new { AndroidCount = deviceGroup.Key.Android ? deviceGroup.Count() : 0, iOSCount = deviceGroup.Key.iOS ? deviceGroup.Count() : 0 }; Console.WriteLine("User | Count"); Console.WriteLine("--------------"); foreach (var dev in query) { if (dev.AndroidCount != 0) Console.WriteLine("{0} | {1}", "Android", dev.AndroidCount); if(dev.iOSCount!=0) Console.WriteLine("{0} | {1}", "iOS", dev.iOSCount); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/959270.html