1
我想修改一些開源代碼來改變它如何過濾搜索結果。我想通過記錄的「名稱」來查詢,而不是它的關鍵。 (我有重複的名字,我想拉回來,但不同的密鑰記錄。)Linq子查詢
這拉回所有記錄
public static IEnumerable<ticket> GetTickets(stDataContext db, bool? active)
{
return from p in db.tickets
where
(active == null ? true :
((bool)active ? p.active : !p.active))
select p;
}
下一級代碼查詢針對這個返回由ID鑰匙。我不確定我應該修改哪個地方。
public static IEnumerable<ticket> Search(stDataContext db, string[] keywords, int usr, DateTime dtFrom, DateTime dtTo, int prty, int stat, bool onlyOpen, int grp, int subgrp,string subgroupName, bool? active)
{
return from p in GetTickets(db, active)
where
p.title.ToLower().Contains(keywords[0].ToLower()) &&
p.title.ToLower().Contains(keywords[1].ToLower()) &&
p.title.ToLower().Contains(keywords[2].ToLower()) &&
p.title.ToLower().Contains(keywords[3].ToLower()) &&
p.title.ToLower().Contains(keywords[4].ToLower()) &&
p.title.ToLower().Contains(keywords[5].ToLower()) &&
p.title.ToLower().Contains(keywords[6].ToLower()) &&
p.title.ToLower().Contains(keywords[7].ToLower()) &&
p.title.ToLower().Contains(keywords[8].ToLower()) &&
p.title.ToLower().Contains(keywords[9].ToLower()) &&
p.submitter == (usr < 0 ? p.submitter : usr) &&
p.submitted >= dtFrom &&
p.submitted <= dtTo &&
(prty == 0 ? true : p.priority == prty) &&
(stat == 0 ? true : p.ticket_status == stat) &&
(!onlyOpen ? true : p.ticket_status != 5) &&
(grp == 0 ? true : (
(p.sub_unit2.unit_ref == grp) ||
(p.sub_unit.unit_ref == grp))) &&
(subgrp == 0 ? true : (
(p.originating_group == subgrp) ||
(p.assigned_to_group == subgrp)))
select p;
}
最後2行的原因是我想改變的。而不是使用fkey(p.originating_group,p.assigned_to_group和subgrp),我想使用名稱subgroupName
。
我應該在GetTickets方法或Search方法中通過子組篩選記錄,以及如何向linq添加子查詢?
感謝, 添