0

EntityFrameworkを使用していくつかのテーブルがあります

UserTable

  • ユーザーID

BookTable

  • BookID
  • BookName

OwnTable

  • ユーザーID
  • BookID

今私は使用することができます:

uw.ownRepository.GetData().where(v=>v.userid=1).select(o=>o.Book)

私が所有するすべての本を取得するために。しかし、私がすべての本を取得したい場合は、ユーザーがそれを所有しているかどうかに注意してください

私はいくつかの解決策を持っています

1.1。

すべての本を選択してから、1冊ごとに1回選択します

愚かな解決策== "

2.2。

    var s = from book in uw.bookRepository.GetData()                    
    join own in uw.ownRepository.GetData() on book.Id equals like.Id into ps
    from o in ps.DefaultIfEmpty()
    select new {bookName =book.name,IsOwn =o==null};

いくつかの擬似コード。

私はそれを試し、うまくいきました。

しかし、私は別のより良い解決策があるかどうか疑問に思っています

のような強いタイプを選択したい場合

    select new Book{bookName =book.name,bookType=book.bookType, IsOwn =o==null};

この場合、bookTableに多くのフィールドがある場合は、すべてのフィールドを割り当てる必要があります。

誰かが何か考えを持っていますか?

4

1 に答える 1

0

これは本当に簡単です。すべての本が必要なため、ブックエンティティでラムダエクスプレスを開始します。この例では、匿名型を選択しています。ただし、定義済みのタイプを選択できます。

Books.GetData().Select(b=> new {name = b.BookName , DoIOwnThisBook = OwnTable.GetData().Where()})
于 2013-02-21T05:37:24.570 に答える