質問

私はいくつかの左がLINQクエリに参加するが、私は、私はむしろ、このアイデアを具現化する方法が分からないと言うだろうにするためにここにしようとしています。

基本的に、ここで私が一緒にプレイしたい3つのデータベース構造です。

<tags>
id | name

<events_tags>
tag_id | event_id

<events>
id | name | some-other-fields
各イベントのタグと1対多の関係が存在するので、

、イベントは、1個の以上のタグを有することができる。

イベントIDから基づいて、私は、関連するタグを知ることができ、私はタグや方法に基づいてイベントを検索する方法を知りたい?

役に立ちましたか?

解決

タグでイベントを検索するには、私はあなたのような何かを書くことができると思います:

var tagsIds = from t in DataContext.Tags
              where t.Name == "sometag"
              select t.id;

var eventsByTag = from et in DataContext.EventTags
                  where tagsIds.Contains(et.tag_id)
                  select et.Event;

イベントのタグを取得するには:

var tagsByEvent = from et in myEvent.EventTags
                  select et.Tag;

後者の場合は、便宜のために、あなたはイベントのプロパティにそれを置くことができます:

public List<Tag> Tags
{
   get
   {
      List<Tag> tags = (from et in this.EventTags
                        select et.Tag).ToList();
      return tags;
   }
}

そして、ちょうどあなたがそれらを必要とするmyEvent.Tagsを参照します。

他のヒント

あなたはここに参加し、多くの多くをやりたいと思っている、そのように見えます.... LINQ to SQLは、これをサポートしていません...ここに素晴らしい記事です。

<のhref = "http://blogs.msdn.com/mitsu/archive/2007/06/21/how-to-implement-a-many-to-many-relationship-using-linq-to- sql.aspx」のrel = "nofollowをnoreferrer"> http://blogs.msdn.com/mitsu/archive/2007/06/21/how-to-implement-a-many-to-many-relationship-using-linq -to-sql.aspxする

とScott Guthrie氏からのこの1つは基本的にグリップを得ることに有用である。

HTTP ://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspxする

助け

希望

指定されたタグ名にイベント名を見つけるには、あなたがこれを行うことができます:

Console.WriteLine("\nEvents tagged as .NET:\n");

(from evtTag in ctx.EventsTags
 join tag in ctx.Tags on evtTag.TagID equals tag.ID
 where tag.Name == ".NET"
 join evt in ctx.Events on evtTag.EventID equals evt.ID
 select evt)
 .ToList()
 .ForEach(evt => Console.WriteLine(evt.Name));

同様に、あなたは、このような特定のイベント名を持つタグを検索することができます:

Console.WriteLine("\nTags for TechEd:\n");

(from evtTag in ctx.EventsTags
 join evt in ctx.Events on evtTag.EventID equals evt.ID
 where evt.Name == "TechEd"
 join tag in ctx.Tags on evtTag.TagID equals tag.ID
 select tag)
 .ToList()
 .ForEach(tag => Console.WriteLine(tag.Name));

私が参加し、テーブルの使用を開始する方法通知は、参加し、既知の値でテーブルの上に濾過し、次いで値でテーブルに結合検索ます。

ジョー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top