1

申し訳ありませんが、これは明らかに明白かもしれませんが、私はこれを機能させるために午前中ずっと過ごしました。

私はASP.netを使用しており、以下に示すようにデータコンテキストがあります。私がやりたいのは、内部結合を追加し、取引の説明ではなく会社名を検索パラメーターとして使用することですが、私の人生ではこれを行うことはできません。

私が最終的に達成しようとしているのはこれです:

SELECT *
FROM Deals
INNER JOIN Companies
ON Deals.CompanyID=Companies.CompanyID

同じ結果を得るために、誰かが以下を書き直して私を助けてくれますか?

MobileVocherDataContext db = new MobileVocherDataContext();

List<Deal> dealresult= db.Deals.Where(c=>c.DealDescription.ToLower().Contains(keyword.ToLower()) && c.ExpiredDate.Date>=DateTime.Now.Date && c.Status==true).Skip(_skip).Take(_count).ToList();
List<CustomSearchresult> result = new List<CustomSearchresult> ();
4

2 に答える 2

1

これはLinqtoEntitiesだと思いますか?

バックグラウンドで何が起こっているかを知っておく必要がありますが、パフォーマンスが大きな問題でない限り、EFでの結合を明示することを心配する必要はありません。

dealresult次のように、会社を反復処理してアクセスできます。

foreach(var deal in dealresult) {
     var company = deal.Company;
}

再パフォーマンス:これにより、反復ごとに追加のSQLステートメントが実行されます。これは、Include()演算子を使用して回避できます(これはEF5で機能するはずです。以前のバージョンで調べてください)。

 MobileVocherDataContext db = new MobileVocherDataContext();

 var dealresult = db.Deals
    .Where(d => d.DealDescription.ToLower().Contains(keyword.ToLower())
    && d.ExpiredDate.Date >= DateTime.Now.Date
    && d.Status
    && d.Company.CompanyName == "Keyword")
    .Include(c => c.Company)
    .Skip(_skip)
    .Take(_count)
    .ToList();
于 2012-10-26T12:49:29.017 に答える
1

これは、いくつかのダミーデータとあなたを助けるかもしれない例です。

 var Custs = new List<Cust>() { new Cust() {CustId=1, Name="Joe"}, new Cust() {CustId=2, Name="Pete"}, new Cust() {CustId=3, Name="Steve"}};
 var Deals = new List<Deal>() { new Deal() {CustId=1, Name="JoeDeal"}, new Deal() {CustId=1, Name="AnotherJoeDeal"}, new Deal() {CustId=3, Name="SteveDeal"}};

var CustomerDeals = from d in Deals
                     join c in Custs on d.CustId equals c.CustId
                     select d;

foreach (var d in CustomerDeals)
{
    Console.WriteLine(d.Name);
}
于 2012-10-26T13:47:37.143 に答える