我有一個搜索字段,它使用下拉列表按部門過濾搜索結果。使用Linq刪除和添加搜索過濾器
我終於得到它的工作很好,但現在我想做一個ALL選項否定這一點。下拉值等於一個int。我仍然在學習,所以我可以改變主意的唯一方法是where查詢中的if else語句。當我這樣做時,我看到很多紅色。
下拉列表中有5個選項。值是1到5. 5 =全部。我想基本停止搜索或除去t0.DivisionID == DDLInt &&
string DDL = DDLAddDivision.SelectedValue;
int DDLInt;
if (int.TryParse(DDL, out DDLInt))
{
int searchID;
if (!int.TryParse(txtSearch.Text.Trim(), out searchID))
searchID = -1; // set to an invalid ID
ItemContext db = new ItemContext();
var q = (from t0 in db.Item
join t1 in db.Categories on t0.CategoryID equals t1.CategoryID
join t2 in db.Divisions on t0.DivisionID equals t2.DivisionID
where
t0.DivisionID == DDLInt &&
//Contains
(
t0.ItemName.Contains(txtSearch.Text.Trim()) ||
t0.Email.Contains(txtSearch.Text.Trim()) ||
t0.Description.Contains(txtSearch.Text.Trim()) ||
t0.Phone.Contains(txtSearch.Text.Trim()) ||
t0.ItemID.Equals(searchID)
)
group t0 by new
{
t0.ItemID,
t0.ItemName,
t0.Description,
t0.Phone,
t0.Email,
t0.DivisionID,
t0.CategoryID,
t1.CategoryName,
t2.DivisionName
} into i
select new
{
i.Key.ItemID,
i.Key.ItemName,
i.Key.Description,
i.Key.Email,
i.Key.Phone,
i.Key.CategoryName,
i.Key.DivisionName,
i.Key.CategoryID,
i.Key.DivisionID
});
if (q.Any() == false)
{
ResultsLabelId.Visible = true;
}
else
{
ResultsLabelId.Visible = false;
}
//bind and return
lv.DataSource = q.ToList();
lv.DataBind();
謝謝任何和所有的幫助!
我們需要_all_此代碼來充分回答你的問題? –
你告訴我,如果我新的答案我不會發布它。試圖確保你明白我在問什麼。我認爲越詳細越容易理解。你明白嗎?鑑於這個問題,你會如何發佈它?如果您認爲不需要,請隨意編輯它。 – jackncoke
@jackncoke:你確實發佈了太多的代碼,但是你將它保留在重要的函數中。讓整個班級傾倒問題真的是我們想要預防的。 – Guvante