Linq syntax?


#1

Hi
What would be the syntax to call Linq methods?

for example:
I have an IQueryable and I want to get the equivalent out of

from user in MyRepository.Users
where user.name == “somename”

That of course is only one example, I want to do a lot more :slight_smile:

My best guess is that I would have to do something like this only it
doesn’t
work

System::Linq::Queryable.where(MyRepository.Users, lambda { |user|
user.name== “somename” })

yields wrong number of arguments (2 for 2147483647)

So what is the correct way?

Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)


#2

Method of Queryable take expression trees. Ruby lambdas are not
convertible to expression trees.
You need to build the expression tree yourself.

Tomas

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Ivan Porto
Carrero
Sent: Tuesday, April 07, 2009 11:06 AM
To: ironruby-core
Subject: [Ironruby-core] Linq syntax?

Hi

What would be the syntax to call Linq methods?

for example:
I have an IQueryable and I want to get the equivalent out of

from user in MyRepository.Users
where user.namehttp://user.name == “somename”

That of course is only one example, I want to do a lot more :slight_smile:

My best guess is that I would have to do something like this only it
doesn’t work

System::Linq::Queryable.where(MyRepository.Users, lambda { |user|
user.namehttp://user.name == “somename” })

yields wrong number of arguments (2 for 2147483647)

So what is the correct way?

Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)


#3

I was just going to post about this. Currently it is not possible to
call
the extension methods in System::Linq::Enumerable and
System::Linq::Queryable.

require ‘System.Core, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089’
=> true

include System::Linq
=> Object

Queryable
=> System::Linq::Queryable

Queryable.where
:0:in `CallSite.Target’: wrong number of arguments (1 for 2147483647)
(ArgumentError)

2009/4/7 Tomas M. removed_email_address@domain.invalid