2017-06-05 63 views
0

我想知道有多少人在especify local中使用此人的入口和出口驗證。如果他已經進入當地,那麼他將與TrCode = "C0"產生交易。當他離開這個地方時,他會產生一個TrCode = "CI"。還有其他類型的TrCode,但這種類型的驗證是無用的。我有一個返回到我這個結果下降波紋管的查詢:在實體框架中使用asp.net中的條件篩選查詢的結果

 var query = from a in context.CardDB 
        join c in context.tblTransaction on a.CardNo equals c.CardNo 
        where c.TrCode == "C0" || c.TrCode == "CI" 
        where c.TrSiteCode == sitecode 
        select c; 

現在我所有具有TrCode ==「C0」或TrCode ==「CI」的行。但結果給了我所有的僱主(CardDB)所做的交易。所以這個結果給了很多不同僱主的交易。有時候,有些僱主會進行2次甚至3次的交易,例如,當他到達時,當他出去吃午飯時,他回來等等。

我必須在網格中顯示只有僱主,一般來說有更多的交易TrCode == "C0"TrCode == "CI"。所以,我要做的只是計算具有相同ID的僱主的交易,並且在網格中顯示時,只顯示一排僱主而不是所有行。

既然已經,謝謝!

+0

CardDB中有哪些列/字段? – mjwills

+0

有ID,CardNo(我用作tblTransaction表中的外鍵)和TrSiteCode,我用它來過濾僱主的工作場所 –

+0

我不擅長「SQL風格」LINQ,尤其是對於不在DB模型中的數據庫模型我的面前。但從根本上說,您需要通過TrSiteCode和TrCode進行分組,然後使用Sum。那會給你三列 - TrSiteCode,TrCode和Sum。 – mjwills

回答

0
var queryNumberC0 = query.Where(c => c.TrCode == "C0").Select(c => c.ID).GroupBy(c => c.Value).ToList(); 
var queryNumberC1 = query.Where(c => c.TrCode == "C1").Select(c => c.ID).GroupBy(c => c.Value).ToList(); 

並獲得ID的數量Ÿ(重點是客戶的ID):

int y = [Customer's ID]; 
int temp = queryNumberC0.Find(c => c.Key == y); 

您不必specifie的ToList()在結束查詢,做你想要的結果。我只是覺得它更容易瀏覽