LINQ中是否有方法來確定哪些WHERE子句受到影響?我有一個叫做Company的對象,它可以有多個BillTo對象,每個BillTo對象可以有多個Generator對象。如何確定LINQ聲明中的哪些WHERE子句爲真
Company
|
+-- BillTo1 - named First
| |
| |-- Generator1 - named Alpha
| |
| +-- Generator2 - named Beta
|
+-- BillTo2 - named Second
|
+-- Generator3 - name Gamma
這裏是LINQ的語句(去掉了多餘的東西其他地方語句):
bool HaveCompany = !string.IsNullOrWhiteSpace(Company);
var AllData = (from co in db.Companies
join bt in db.Billtoes on co.ID equals bt.CompanyID into bts
from b in bts.DefaultIfEmpty()
join gn in db.Generators on b.ID equals gn.BillToID into gns
from g in gns.DefaultIfEmpty()
where co.Active == true
&& (
co.Name.Contains(HaveCompany ? Company : co.Name) ||
b.Name.Contains(HaveCompany ? Company : b.Name) ||
g.Name.Contains(HaveCompany ? Company : g.Name)
)
select new {
CompanyID = co.ID,
BillTo = b,
Generator = g,
Name = co.Name,
}).ToList();
的問題是,它正確耳目一新。如果我在BillTo上找到「名稱」匹配項,我不需要做「Generator = g」,反之亦然,如果我在發生器上找到它,我不需要做「BillTo = b」。
因此,如果有一種方法可以知道哪個WHERE子句被命中,那麼我會將相應的b或g添加到結果中。我知道我可以通過AFTER重申我得到的結果,並重新檢查我實際上作爲WHERE子句發送的7個字段中的每一個,但這看起來像是額外的代碼。也許我的LINQ的調整是爲了?是否有價值可以通過反思或somethng提取出來,以找出遭遇的是什麼?
只是不這樣做與LINQ? – SimpleVar
我只能看到1 Where子句。 –
@YoryeNathan我使用EF和LINQ是合乎邏輯的選擇。 – Grandizer