0

次のテーブルがあります。

Monster:  
Name     Description              EatsPeople 
Vampire  Pale, afraid of light    True 
Ghost    See-through, annoying    False 
Wraith   Green-ish, ugly, dumb    True 

TagLookup: 
Name    ID 
Ghost   1 
Ghost   2 
Wraith  1 

Tags: 
ID    Text                      Value 
1     Green                     green-skin 
2     Screams like a banshee    banshee-call 

グリーン スキン タグを持つモンスターをクエリするには、次の SQL クエリを使用します。

SELECT m.Name, m.Description, m.EatsPeople 
  FROM dbo.Monster AS m 
  INNER JOIN dbo.TagLookup AS tl 
    ON m.Name = tl.Name 
  INNER JOIN dbo.Tags AS t 
    ON t.ID = tl.ID 
    AND t.Value = 'green-skin'; 

これは期待どおりにうまく機能しますが、このクエリの LINQ バージョンで問題が発生しています。運が悪い+ LinqPadを試してみました+運があまりないBingの検索+ Stackoverflow

4

2 に答える 2

1

これは同じ結果になりjoinます:

var result=(
    from m in db.Moster
    join tl in db.TagLookup
        on tl.Name equals tl.Name
    from t in db.Tags.Where(x=>x.ID==tl.ID && x.Value = "green-skin")
    select new
    {
        m.Name, 
        m.Description, 
        m.EatsPeople 
    });

または、このようにすることもできます。これは同じ結果になります:

var result=(
    from m in db.Moster
    join tl in db.TagLookup
        on tl.Name equals tl.Name
    join t in db.Tags
        on tl.ID equals t.ID
    where
        t.Value = "green-skin"
    select new
    {
        m.Name, 
        m.Description, 
        m.EatsPeople 
    });
于 2012-04-19T06:35:01.753 に答える
0

これを試して:

 var a = from m in Monsters
            join tl in TagLookup  
                on m.Name equals tl.Name  
            join t in Tags
                on t.ID = tl.ID  
            where t.Value = 'green-skin';
            select new 
            {
                 m.Name, 
                 m.Description, 
                 m.EatsPeople  
            };
于 2012-04-19T06:35:35.090 に答える