views:

70

answers:

1

I needed to pass a IGrouping on an anonymously typed index to a function.

 List<DataClass> sampleList = new List<DataClass>();
 var groups = sampleList.GroupBy(item => new { item.A, item.B, item.C }); 

I needed to process each of the groups with a function. So I wrote this which works.

static void ProcessGroup<T>(IGrouping<T, DataClass> group)
        { 
        //consume group

        }

Now I need to know why this works and Is it the right way to do pass around this kind of data. I just wrote it on a hunch that this might work.

+3  A: 

I need to know why this works

It works because that is a legal C# program as described by the C# specification. Specifically, section 7.5.2 of the C# 4 spec.

is it the right way to pass around this kind of data?

Looks fine to me.

Eric Lippert
@Eric Thanks. I wondered why it did work because I didnt know about type inference. Would such a thing be possible without type inference?
Midhat
@Midhat: You cannot state the name of an anonymous type because it has no name. Therefore, everywhere that an anonymous type is used, the type must be inferred from the type of the expression.
Eric Lippert