我有一个来自数据库并进入PagedDataSource的数据。数据来自一个查询,该查询提取了大约10条记录,大约20列。根据一个varchar列名"source",我想找到该源的唯一实例。这是一个非常基本的查询。在SQL中,我会这样做:
select count(distinct source) from SourceTable
我尝试了下面的方法,它给出了计数,但没有明显的(或唯一的)计数。
Dim query = Aggregate source In pagedDS
Into Count()
我不知道如何在LINQ查询中选择列,以及如何通过一列应用聚合。我需要这个在VB。. NET,但c#解决方案应该足够接近。
由于PagedDataSource
不实现IEnumerable<T>
,只是IEnumerable
,您需要首先使用Cast
将序列转换为适当类型的序列。您需要知道序列中对象的实际类型,因为这里没有提到它是什么。
然后依次应用每个操作:
(在c#)
var query = table.Cast<YourTypeGoesHere>()
.Select(item => item.Column)
.Distinct()
.Count();
我放弃了PageDataSource
,因为我不能以我想要的方式使用LINQ。为了这个目的,我引入了一个数据表,并在数据表上运行了我的查询,它工作得很好。下面是代码
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()
由于我们在Visual Basic中有Distinct
关键字,您可以使用以下查询:
Dim query = (From b In Locales
Select b.Id Distinct).Count()