2011-07-11 1 views
0

クエリが含まれていますcuisineID(料理の種類)を考えると、料理もがそれらのrestauarants(レストランにつき1)OG各都市を返すことを提供するレストランのリストを返します。 RESTAURANT表とCITY表には、CITY_IDに基づく外部キー関係があります。 LinqをSQL .dbmlファイル(FVRG.dbml)に追加し、データベースのすべてのテーブルをFVRGdatacontextファイルにロードしました。ファイルを見ると、各テーブル間の外部キーの関係を見ることができます。ただし、Intellisenseはincludeステートメントの使用法を認識せず、次のエラーを返します。あなたは助けてもらえますか?よろしく、スーザンLINQマルチテーブルクエリ:上のエラーが

エラー1:「System.Data.Linq.Table」System.Data」タイプの 最初の引数を受け入れる「含める」「を含める」の 定義なし拡張メソッドが含まれていません。 Linq.Table」 (あなたがusingディレクティブまたはアセンブリ参照 不足している?)H見つけることができる:\ ASP.Net \ FVRG \ DL \ DLgetRestaurants.cs 20 68 DL

using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Configuration; 
using System.Data.SqlClient; 

namespace DL 
{ 
    public class DLgetRestaurants 
    { 
     DL.FVRGDataContext db = new FVRGDataContext(); 

     public IEnumerable <RESTAURANT> getRestaurants(string cuisineName) 
     { 

     var cuisineID = db.CUISINEs.First(s => s.CUISINE_NAME == cuisineName).CUISINE_ID; 


      var restaurantList = from RESTAURANT in db.RESTAURANTs.Include("CITies") 
           where RESTAURANT.CITY.Any(t => t.CITY_ID == 2) 
           select RESTAURANT; 

      return restaurantList; 
     } 
    } 
} 
+0

新しい質問をする前に、あなたの他の質問の回答の一部を受け入れます。 –

+0

質問を入力する際に​​間違いを犯しましたが、元に戻す方法を理解できません>どのように知っていますか? – SUSAN

+0

また私は、私が提起したそれぞれの質問に答えました。申し訳ありませんがdiscourtesy。 – SUSAN

答えて

0
var db = new YourDataContext(); 

List<Restaurant> result = (from c in db.Cities 
          join r in db.Restaurants on c.CityID equals r.CityID 
          where c.CuisineName == cuisineName && c.CityID == cityID 
          select r).ToList(); 

return result; 

理にかなっている?

EDIT

あなたはこのような何かを持っている可能性が加わり、複数たかったら...

List<Restaurant> result = (from c in db.Cities 
          join r in db.Restaurants on c.CityID equals r.CityID 
          join x in db.SomethingElse on r.SomethingID equals x.SomethingID 
          where c.CuisineName == cuisineName && c.CityID == cityID 
          select r).ToList(); 
+0

はい!それは動作しますが、返されているデータを見ると、CITY_NAMEは含まれていません。選択したリストラ名と一緒に返されるように指定する必要がありますか?申し訳ありませんが、私はLINQの初心者です。ありがとう〜susan〜 – SUSAN

+0

また、もう1つ、私の料理テーブルに2回目の参加を追加したいのですが、私はちょうど結合ラインの最後に '&& "を使用して" ON .....等号? 2回目の参加のためのpharse? – SUSAN

+0

私はLINQ結合に関する詳細を追加するために私の答えを編集しましたが、あなたのデータベースについて詳しく知ることなしに恐れています。なぜなら、 'CITY_NAME'フィールドが含まれていない理由についてお手伝いできません。私はちょうどあなたが得ることができるものを見て回ることをお勧めします。詳細については、[101サンプル](http://msdn.microsoft.com/en-us/vcsharp/aa336746)を参照してください。 – simonlchilds

0

LINQへSQLは、EFのように、拡張メソッドInclude()をサポートしていません。

代わりにDataLoadOptionsに.LoadWith()を追加したいと思っています。もちろん、限り、あなたは、データベーステーブルを持っているようCitiesと呼ばれ、表がCitiesテーブルの主キーにCityID外部キーでRestaurantsと呼ばれている....というい

var db = new MyDataContext(); 
var dlo = new DataLoadOptions(); 
dlo.LoadWith<Cities>(p => p.Restaurants); 
db.LoadOptions = dlo; 

var restaurantList = from RESTAURANT in db.RESTAURANTs 
        where RESTAURANT.CITY.Any(t => t.CITY_ID == cuisineID) 
        select RESTAURANT; 
+0

ありがとうございます。私はそれぞれの物語をO/Rデザイナーにドラッグすることで、「エンティティクラス」を作成したと思っていました。 – SUSAN

+0

@Susanあなたしました! –

+0

ありがとうございました...〜susan〜 – SUSAN