2012-09-04 160 views
0

我有5-6個文本框和下拉列表,根據我想要獲取結果的值, 使用OR條件此查詢工作正常,但是當我使用AND對於多個條件 它不會給我任何結果由於顯而易見的原因。現在我的問題是,我怎麼能 我改變這個查詢,使其工作的AND和OR條件。LINQ查詢搜索條件

查詢

Public Sub SerachCriteria() 
    Debugger.Break() 
    Dim s = New Ex1DataContext(SPContext.Current.Web.Url) 
    Dim vendors = s.PurchaseOrderWrite 
    Dim query = From vendor In vendors.ToList() _ 
       Where (Not ddsearchorderVendor.SelectedItem.Text = "--Select--" AndAlso vendor.Supplier.Title = ddsearchorderVendor.SelectedItem.Text) _ 
       Or (Not ddsearchorderStatus.SelectedItem.Text = "--Select--" AndAlso vendor.Status = ddsearchorderStatus.SelectedItem.Text) _ 
       Or (Not txtSearchOrder.Text Is Nothing AndAlso vendor.Purchaseorderno = txtSearchOrder.Text) _ 
       Or (Not ddsearchorderdate.Text = "--Select--" AndAlso vendor.Orderdate = ddsearchorderdate.Date) _ 
       Select vendor.Purchaseorderno 
    For Each a In query 
     listpurchaseorder.Items.Add(a) 
     listpurchaseorder.DataTextField = "Purchaseorderno" 
     listpurchaseorder.DataValueField = "ID" 
     listpurchaseorder.DataBind() 
    Next 
    SerachCriteriaPartNo() 
End Sub 

感謝

+0

任何人都可以在這個問題上提供幫助 –

回答

0

並,在那裏你連接多個您可以使用這一策略,按需條款。見http://www.thinqlinq.com/Post.aspx/Title/Dynamically-extending-LINQ-queryies-without-building-expression-trees。或者更棘手,因爲它們通常需要您的實現或動態表達式樹的創建。結合And和或者最好考慮使用Linq to SQL的動態查詢庫。

如果您使用EF,我會推薦EF的ObjectBuilder方法或EntitySQL。有關ObjectQuery,請參閱http://thedatafarm.com/blog/data-access/querying-with-linq-to-entities-vs-objectquery-in-ef/。另請參閱http://archive.msdn.microsoft.com/EFQuerySamples中的BuilderMethodSamples。有了這個,你可以使用字符串concat來建立你的where子句。它們仍然會被參數化,並且使SQL注入比動態SQL更難。