我有一个从数据库传入并进入PagedDataSource的数据。该数据来自一个查询,该查询提取了大约20个列的10个记录。基于一个varchar列名称`source',我想找到源的唯一实例。这是一个非常基本的查询。在SQL中我会这样做:
select count(distinct source) from SourceTable
我尝试了以下内容,它确实提供了计数,但没有明确(或唯一)计数。
Dim query = Aggregate source In pagedDS
Into Count()
我不知道如何在LINQ查询中选择列以及如何仅通过一列应用聚合。我需要在VB.NET中使用它,但C#解决方案应该足够接近。
答案 0 :(得分:3)
由于PagedDataSource
未实现IEnumerable<T>
,只需IEnumerable
,因此您需要先使用Cast
将序列转换为正确类型的序列。你需要知道序列中对象的实际类型是什么,因为你没有提到它在这里。
然后一个接一个地应用每个操作:
(在C#中:)
var query = table.Cast<YourTypeGoesHere>()
.Select(item => item.Column)
.Distinct()
.Count();
答案 1 :(得分:3)
我放弃了PageDataSource
,因为我无法以我想要的方式使用LINQ。我为此目的引入了一个DataTable,并在DataTable上运行了我的查询。这是代码
Dim dv As New System.Data.DataView
Dim dt As New System.Data.DataTable
dv = osReviews.Select(DataSourceSelectArguments.Empty)
dt = dv.ToTable()
Dim query = (From row In dt
Select row("Source") Distinct).Count()
答案 2 :(得分:1)
由于我们在Visual Basic中有Distinct
关键字,您可以使用此查询:
Dim query = (From b In Locales
Select b.Id Distinct).Count()