我遇到了一个新问题,或者我的头部有点卡住了。
我有几个DropDownLists。在那里你可以选择一个价值或没有。在选择Value之后,两者对于LINQ语句中的where子句很重要。所以我需要的是,如果你选择一个它应该说的值(例如):
var result = from c in context.table
where c.name == dropdown.selectedvalue
select c.id;
这是更容易的部分。所以我的问题是,如果你在下拉列表中选择了null / empty字段,它应该给我DB的每个结果。与上面的相同声明一样,但没有where子句。
我最大的问题是,我有4个不同的DropDownLists,每个List都是where子句的元素。我的LINQ声明长约30行,我不想为每个案例复制声明5次。
var finishedReports = (from r in context.response
from c in context.maxCTs
from t in context.ticket
join tp in context.priorities
on t.ticket_priority_id equals tp.id
join ts in context.states
on t.ticket_state_id equals ts.id
from a in context.article
where (from ti in context.ticket
where ti.tn == r.tn
select new { ti.id }).Contains(new { id = a.ticket_id })
where r.change_time >= startdat &&
r.change_time <= enddat &&
r.tn == c.tn &&
t.tn == r.tn
//where t.queue_id == queueID &&
// tp.id == priority &&
// ts.name.Contains(status)
orderby r.tn
select new
{
r.tn,
r.title,
a.id,
a.a_subject,
a.article_type_id,
a.a_from,
tp.id,
ts.name,
r.change_time,
r.start_date,
r.create_date,
c.finish_date
}).Distinct();
当我从DropDownList中选择的值为null或为空时,如何在Statement中写入它应该从DB中获取每个数据? (上面代码中的注释行是where子句,用于比较下拉列表中的值)
感谢您的帮助,如果我的问题是令人困惑,我会改变它!
答案 0 :(得分:1)
拥有这样的lambda,如果下拉列表中有值
,则只会生成SQLwhere dropdown.value == "" || db.myfield == dropdown.value