2012-04-03 8 views
2

私が持っている、そのようなデータベース構造(1 - 1、0 - 多くは)LINQのは、2つのテーブルを結合する

私は指定された製品のすべてのユーザーを見つける必要がある
Product 1->0 Orders 0->1 Users 

、私はLINQクエリを書き始めたが、やるされていませんそれを終わらせる方法を知っている。

public IQueryable<User> GetUsers(int productId) 
{    
    return _db.Products.First(p => p.Id == productId).... 
} 

答えて

1

まず物事まず、Firstの方法は、あなたの基準を満たす最初の項目を返します、そしてあなたがIQueryableUserのSを返すようにしたいので、これはあなたが望むものはおそらくではありません。

第2に、Linq-to-SQLを使い始める最も簡単な方法は、特に、あなたが結合を扱っているときには、クエリ表記法を使用することです(don't look too pretty when using lambda expressions)。

public IQueryable<User> GetUsers(int productId) 
{ 
    return from p in _db.Products 
      join o in _db.Orders on p.Id equals o.productId 
      join u in _db.Users on o.userId equals u.userId 
      where p.productId == productId 
      select u; 
} 
1

このような何かが(VB.netで書かれた)動作するはずです:

Dim users() = (from x in _db.Users 
      Join y in _db.Orders on y.userid equals x.userid 
      Join z in _db.Product on z.productid equals y.productid 
      where z.productname = "ProductName" 
      select x.firstname,x.lastname,x.email,e.tel).toarray() 

私はテーブルのフィールドで推測しましたが、これはあなたのファーストネーム、姓、電子メールや電話を与えます特定の製品を注文したユーザーの数

ありがとう

ポール

関連する問題