tags:

views:

23

answers:

1

Hi everybody, I'm a principiant of Linq so i need some help..

I don’t know if in Linq syntax by breaking a query in 2 or more parts,

just like the following example,

the records will be downloaded immediatly from sql server in each step,or they will be sent to server at the moment when I’ll start to see all the data? for exemple when I bind some objects (a Datagrid for exemple)

System.Linq.IQueryable<Panorami> Result = db.Panorami;
byte FoundOneContion = 0;

//step 1
if (!string.IsNullOrEmpty(Title))
{
  Result = Result.Where(p => SqlMethods.Like(p.Title, "%" + Title + "%"));

  FoundOneContion = 1;
}
//step 2
if (!string.IsNullOrEmpty(Subject))
{
  Result = Result.Where(p => SqlMethods.Like(p.Subject, "%" + Subject + "%"));
  FoundOneContion = 1;
}
if (FoundOneContion == 0)
{
  return null;
}
else
{
  return Result.OrderBy(p => p.Title).Skip(PS * CP).Take(PS);
}

If unfortunatly Linq download immediately all the records

(Therefore such a doubt I have had was right!)

exist any syntax to round the problem?

For example: ternary operator ( condition ? true part : false part )

For any suggestions i would appreciate them a lot. thanks everyone!

+1  A: 

The above method does not enumerate the query - therefore no database calls are made. The query is constructed and not executed.

You can enumerate the query by calling foreach, or calling some method that calls foreach (such as ToList, ToArray), or by calling GetEnumerator(). This will cause the query to execute.

David B
Thank you very much!!completely satisfied by the response :))