如何在Silverlight中使用LINQ编写like子句

时间:2013-04-08 09:11:58

标签: linq silverlight-5.0 sql-like

在我的项目中,我想在单元列表上执行搜索操作。我有ObservableCollection<Unit> UnitList,其中包含使用WCF服务从SQL Server 2008获取的数据。我可以使用SQL在SQL Server中进行搜索,但为此我必须再次调用服务,这会妨碍性能。

为了解决这个问题,我现在尝试使用LINQ根据已经获取的ObservableCollection上的搜索参数来过滤数据。我写了以下查询:

 var result = from u in UnitList
                         where u.UnitNo.Contains(this.UnitNo)
                         && u.ParcelName.Contains(this.ParcelName)
                         && u.TransformationType.Contains(this.TransformationType)
                         && u.TenantName.Contains(this.TenantName)
                         && u.UnitType.Contains(this.UnitType)
                         && u.ClientContact.Contains(this.ClientContact)
                         select u;

但只有当所有参数都匹配时才会返回值。在SQL Server中,我使用'%%'来解决 这个问题。如何在LINQ中写这个。

编辑:我在其中一个解决方案中找到了方法SQLMethods.Like,但我无法在我的项目中使用此方法。我需要为此添加任何参考吗?

2 个答案:

答案 0 :(得分:0)

也许您的sql server安装了不区分大小写的参数。 'Contains'区分大小写。只需在字符串上使用ToUpper或ToLower即可。

答案 1 :(得分:0)

您可以使用:

List<Units> listUnits = UnitList.Where(d => d.UnitNo == this.UnitNo 
  && d.ParcelName == this.ParcelName 
  && d.TransformationType == this.TransformationType 
  && d.TenantName == this.TenantName 
  && d.UnitType == this.UnitType 
  && d.ClientContact == this.ClientContact ).Tolist();

通过这个,你将列出UnitUnits中UnitList中所有具有你参数的单位。

有关Linq的更多信息,请查看:

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b