Class Scan Delivered As Boolean ScanDate As Date State As String Facility As String End Class
然后我创建一个列表并用包含任何内容的扫描填充它.
Dim Scans As New List(Of Scan)
我需要挖掘清单以获取各种信息.我想用liNQ来做.问题是,对于我的生活,我只是没有得到它.语法将我抛弃,结果不是强类型的事实会让我失望,并且Web上的示例过于简单或过于复杂.
我怎么能
>获取扫描计数,按日期分配Delivered = True
>获取扫描计数,按设施分组,其中Delivered = True
>获取扫描计数,按状态分组,其中Delivered = True
然后我想在For Each循环中使用它.
For Each result In GroupedResults ‘My CodeNext
理想情况下,我希望结果是强类型的.这可能吗?
任何人都可以推荐一些链接来开始这个?我遇到的每个网站都让我头脑发热.我根本不理解它.
编辑:
十分感谢大家.我仍然对这些东西感到头疼,但至少这是一个真实世界的例子,我可以用它来了解发生了什么.
我希望这个简单的例子可以帮助我进入一个更复杂的用途 – 没有运气.我本来应该这样做了.
所有示例似乎都使用键/值响应.如果我需要分组两个值,该怎么办?
Class Scan Delivered As Boolean Scanned As Boolean ScanDate As Date State As String Facility As String End Class1. Get a count of Delivered = True,a count of Scanned=True,grouped by Date 2. Get a count of Delivered = True,a count of Scanned=True,grouped by Facility 3. Get a count of Delivered = True,grouped by State
是否有可能在一个结果中得到这个?
编辑编辑:
回答了我自己的编辑!这似乎对我有用:
Dim query = From r In scans _ Group r By r.ScanDate Into g = Group _ Select New With _ {g,.DeliveredCount = g.Count(Function(s) s.Delivered),.ScannedCount = g.Count(Function(s) s.Scanned)}
十分感谢大家.你让我到了可以解决问题的地步.我仍然没有“得到”我正在做的事情(什么是函数?!),但我有一些东西可以开始.我打算花时间学习这个.我认为真正让我失望的是网上的样本是C#. normaly我没有转换语法的问题,但是使用liNQ并不是那么简单.我以为我做错了什么,但只是语法非常不同.
解决方法 您不限于使用liNQ的查询语法.您还可以在集合上使用liNQ扩展方法.您将收到的结果将是强类型.虽然在不返回现有类型时将使用匿名类型.
下面的代码是C#,但你会明白:
static voID Main( string[] args ){ List<Scan> scans = new List<Scan> (); scans.Add (new Scan (new DateTime (2010,1,1),true,"Facility1")); scans.Add (new Scan (new DateTime (2010,"Facility2")); scans.Add (new Scan (new DateTime (2010,false,"Facility3")); scans.Add (new Scan (new DateTime (2010,26),"Facility1")); var result1 = scans.Where (s => s.Delivered).GroupBy (s => s.ScanDate); foreach( var r in result1 ) { Console.Writeline (String.Format ("Number of delivered scans for {0}: {1}",r.Key,r.Count ())); } var result2 = scans.Where (s => s.Delivered).GroupBy (s => s.Facility); foreach( var r in result2 ) { Console.Writeline (String.Format ("Number of delivered scans for {0}: {1}",r.Count ())); } Console.Readline ();}
此处的结果并非真正类型化,因为GroupBy表达式返回IGrouPing类型.
但是,通过这样做,你可以解决这个问题:
var result2 = scans.Where (s => s.Delivered) .GroupBy (s => s.Facility) .Select( s => new { Facility = s.Key,NumberOfItems = s.Count() } );
使用liNQ提供的扩展方法,可能会帮助您更多地理解它.
对不起C#语法,但我对VB.NET并不熟悉.
总结以上是内存溢出为你收集整理的vb.net – 我只是不明白如何使用Linq全部内容,希望文章能够帮你解决vb.net – 我只是不明白如何使用Linq所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)