English 中文(简体)
Linq Containsfunction problem
原标题:

I use Ria Service domainservice for data query.

In My database, there is a table People with firstname, lastname. Then I use EF/RIA services for data processing.

Then I create a Filter ViewModel to capture user inputs, based it the input, I construct a linq Query to access data.

At server side, the default DomainService query for person is:

 public IQueryable<Person> GetPerson()
   {
     return this.Context.Person;
   }

At client side, the linq Query for filter is something like(I use Contains function here):

if (!String.IsNullOrEmpty(this.LastName))
    q = q.Where(p => (p.LastName.Contains(this.LastName)));

The generated linq query is something like(when debugging,I got it):

MyData.Person[].Where(p => (p.LastName.Contains(value(MyViewModel.PersonFilterVM).LastName) || p.Person.LegalLastName.Contains(value(MyViewModel.PersonFilterVM).LastName)))

When I run the app, I put "Smith" for last name for search, but the result is totally irrelevant with "Smith"!

How to fix it?

问题回答

I m guessing here as to what your error is so this might not work for you.

In your 2nd code snippet you do the following.

q = q.Where(p => (p.LastName.Contains(this.LastName)));

This is where I think your error is. Linq does not evaluate the where clause until you iterate over it. Try changing the line to the following.

qWithData = q.Where(p => (p.LastName.Contains(this.LastName))).ToList();

The .ToList() call will load the query with data.

When you check in the debugger, does value(MyViewModel.PersonFilterVM).LastName evaluate to Smith at the time the query is resolved?

Recall that queries are not resolved until they are enumerated.





相关问题
Silverlight Rich text box control

Our team decided that we need our own custom Rich text box control for Silverlight app we are developing. We looked at existing controls mentioned at A good rich text control for Silverlight but ...

Silverlight ImageBrush not rendering (with Bing Map Control)

I m trying to add an image to a Pushpin instance from the Silverlight Bing Map Control, but I can t seem to get it to render (the pushpin renders fine). This is probably a general WPF question rather ...

Silverlight OpenFileDialog DoEvents equivalent

I m processing large files after they are selected by the user. My code looks like the following: if (FileDialog.ShowDialog() == true) { // process really big file } This freezes up the UI so ...

list of controls with templates in silverlight

Does anyone know where to find a list of controls that you can set the template on in Silverlight? I ve wasted several hours now trying to create control templates only to find that the control doesn ...

Silverlight, Updating the UI during processing

I have a simple silverlight multifile upload application, and i want to provide the user with some feedback, right now its only in a test phase and i dont have the webservice. Somehow i cant get the ...

Silverlight 3 - FindName returns null

This looks a bug to me.. Using Silverlight 3 and i have a user control defined in XAML and trying to access the object during runtime returns a null. <Grid> <common:CommonGridEditPanel x:...

silverlight 3 collection binding

Someone please help me understand why this binding does not work... I have a class called SelectionManager with a property called dates which is populated by a WCF service. The property is an ...

热门标签