0

我有一些表,使用实体框架

用户表

  • 用户身份

书桌

  • 书号
  • 书名

拥有表

  • 用户身份
  • 书号

现在我可以使用:

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

获取我拥有的所有书籍。但是如果我想获取所有书籍,请注意用户是否拥有它

我有一些解决方案

1.

选择所有书籍,然后为每本书选择一次

愚蠢的解决方案= =

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

这真的很简单。您想要所有书籍,因此您想在书籍实体上启动 lambda express。在此处的示例中,我选择了匿名类型。但是,您可以选择预定义的类型。

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