2017-06-05 2 views
0

私はこの人の入力および終了検証を使用して、いくつかのローカル人物が特定のローカルにいることを知りたいと思います。彼が現地に入国した場合は、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の3つの列が表示されます。 – 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の数を取得するY(キーは、顧客のIDです):あなたはの終わりに()ToListメソッドをspecifieする必要はありません

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

クエリは、あなたが望む結果を返します。

関連する問題