hello,

i have a big datable of a bunch of stuff. i am interested in getting
row counts that match certain criteria.

currently i do this by creating a new DataView for each criteria, and
getting its .RowCount. like so:

dv = New DataView(dt, "Type = 2", "Type",
DataViewRowState.CurrentRows)
total = dv.Count
writer.WriteLine(String.Format("Lines of Type 2: {0}.", total))

...that works, but i was wondering -- is there a way to use the
DataTable.Compute() method to do this? i had tried something like
this, but it didnt work:

Dim oTotal As Object = dt.Compute("Count(*)", "Type = 2")

...this doesnt work because the aggregate function Count() isnt
designed to work this way. but is there something that is?

thanks!
matt

Re: DataTable.Compute() question by Cor

Cor
Sat Aug 18 00:24:40 CDT 2007

Matt,

Maybe there is, however what you think to win with that, in my idea is your
method very inventive and most probably the fastest you can get.

Cor

"SpaceMarine" <spacemarine@mailinator.com> schreef in bericht
news:1187391858.515468.75440@19g2000hsx.googlegroups.com...
> hello,
>
> i have a big datable of a bunch of stuff. i am interested in getting
> row counts that match certain criteria.
>
> currently i do this by creating a new DataView for each criteria, and
> getting its .RowCount. like so:
>
> dv = New DataView(dt, "Type = 2", "Type",
> DataViewRowState.CurrentRows)
> total = dv.Count
> writer.WriteLine(String.Format("Lines of Type 2: {0}.", total))
>
> ...that works, but i was wondering -- is there a way to use the
> DataTable.Compute() method to do this? i had tried something like
> this, but it didnt work:
>
> Dim oTotal As Object = dt.Compute("Count(*)", "Type = 2")
>
> ...this doesnt work because the aggregate function Count() isnt
> designed to work this way. but is there something that is?
>
> thanks!
> matt
>


Re: DataTable.Compute() question by Miha

Miha
Mon Aug 20 03:46:16 CDT 2007

No, you can't use Compute for this one.
As an alternative (similar to your solution) you might use DataTable.Select
method.

--
Miha Markic [MVP C#, INETA Country Leader for Slovenia]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/

"SpaceMarine" <spacemarine@mailinator.com> wrote in message
news:1187391858.515468.75440@19g2000hsx.googlegroups.com...
> hello,
>
> i have a big datable of a bunch of stuff. i am interested in getting
> row counts that match certain criteria.
>
> currently i do this by creating a new DataView for each criteria, and
> getting its .RowCount. like so:
>
> dv = New DataView(dt, "Type = 2", "Type",
> DataViewRowState.CurrentRows)
> total = dv.Count
> writer.WriteLine(String.Format("Lines of Type 2: {0}.", total))
>
> ...that works, but i was wondering -- is there a way to use the
> DataTable.Compute() method to do this? i had tried something like
> this, but it didnt work:
>
> Dim oTotal As Object = dt.Compute("Count(*)", "Type = 2")
>
> ...this doesnt work because the aggregate function Count() isnt
> designed to work this way. but is there something that is?
>
> thanks!
> matt
>


Re: DataTable.Compute() question by SpaceMarine

SpaceMarine
Mon Aug 20 11:28:20 CDT 2007

On Aug 20, 3:46 am, "Miha Markic" <miha at rthand com> wrote:
> No, you can't use Compute for this one.
> As an alternative (similar to your solution) you might use DataTable.Select
> method.

i see. thanks all.


sm



Re: DataTable.Compute() question by Amit

Amit
Tue Aug 21 23:15:59 CDT 2007

On Aug 17, 4:04 pm, SpaceMarine <spacemar...@mailinator.com> wrote:
> hello,
>
> i have a big datable of a bunch of stuff. i am interested in getting
> row counts that match certain criteria.
>
> currently i do this by creating a new DataView for each criteria, and
> getting its .RowCount. like so:
>
> dv = New DataView(dt, "Type = 2", "Type",
> DataViewRowState.CurrentRows)
> total = dv.Count
> writer.WriteLine(String.Format("Lines of Type 2: {0}.", total))
>
> ...that works, but i was wondering -- is there a way to use the
> DataTable.Compute() method to do this? i had tried something like
> this, but it didnt work:
>
> Dim oTotal As Object = dt.Compute("Count(*)", "Type = 2")
>
> ...this doesnt work because the aggregate function Count() isnt
> designed to work this way. but is there something that is?
>
> thanks!
> matt

Can't you use dt.Rows.Length

And I don't think DataTable.Select provides too much options either


Re: DataTable.Compute() question by Miha

Miha
Wed Aug 22 02:41:03 CDT 2007


"Amit" <darshnik1980@gmail.com> wrote in message
news:1187756159.591150.158790@l22g2000prc.googlegroups.com...
> On Aug 17, 4:04 pm, SpaceMarine <spacemar...@mailinator.com> wrote:
>> hello,
>>
>> i have a big datable of a bunch of stuff. i am interested in getting
>> row counts that match certain criteria.
>>
>> currently i do this by creating a new DataView for each criteria, and
>> getting its .RowCount. like so:
>>
>> dv = New DataView(dt, "Type = 2", "Type",
>> DataViewRowState.CurrentRows)
>> total = dv.Count
>> writer.WriteLine(String.Format("Lines of Type 2: {0}.", total))
>>
>> ...that works, but i was wondering -- is there a way to use the
>> DataTable.Compute() method to do this? i had tried something like
>> this, but it didnt work:
>>
>> Dim oTotal As Object = dt.Compute("Count(*)", "Type = 2")
>>
>> ...this doesnt work because the aggregate function Count() isnt
>> designed to work this way. but is there something that is?
>>
>> thanks!
>> matt
>
> Can't you use dt.Rows.Length

No. He needs to count *filtered* rows, not all rows.

> And I don't think DataTable.Select provides too much options either

No, it doesn't - it is quite same as creating a DataView, it is just less
code in this scenario.
--
Miha Markic [MVP C#, INETA Country Leader for Slovenia]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/
>