Csharp/C#教程:使用linq对包含子字符串的表进行分组分享


使用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

(0)
上一篇 2021年11月23日
下一篇 2021年11月23日

精彩推荐