PC Review


Reply
Thread Tools Rate Thread

DataTable.Compute() question

 
 
SpaceMarine
Guest
Posts: n/a
 
      18th Aug 2007
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

 
Reply With Quote
 
 
 
 
Cor Ligthert[MVP]
Guest
Posts: n/a
 
      18th Aug 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" <(E-Mail Removed)> schreef in bericht
news:(E-Mail Removed)...
> 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
>


 
Reply With Quote
 
Miha Markic
Guest
Posts: n/a
 
      20th Aug 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" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
>


 
Reply With Quote
 
SpaceMarine
Guest
Posts: n/a
 
      20th Aug 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


 
Reply With Quote
 
Amit
Guest
Posts: n/a
 
      22nd Aug 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

 
Reply With Quote
 
Miha Markic
Guest
Posts: n/a
 
      22nd Aug 2007

"Amit" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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/
>


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
datatable.compute and CurrentRows Brian Yuill Microsoft VB .NET 1 12th Mar 2008 02:32 PM
datatable.compute Chuck Hecht Microsoft Dot NET Compact Framework 1 28th Aug 2007 03:45 AM
DataTable.Compute() question SpaceMarine Microsoft Dot NET Framework 5 22nd Aug 2007 08:41 AM
datatable.compute method =?Utf-8?B?RGF2aWQgQW5kZXJzb24=?= Microsoft Dot NET 1 8th Jun 2005 11:16 AM
datatable.compute with datagrid [question] Agnes Microsoft VB .NET 1 28th Sep 2004 10:26 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 06:18 PM.