繁体   English   中英

连接两个表时的C#实体框架

[英]C# entity framework when join two table

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

用户表

  • 用户身份

书桌

  • 书号
  • 书名

自己的表

  • 用户身份
  • 书号

现在我可以使用:

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中有很多字段,则必须分配每个字段。

有人知道吗?

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

Books.GetData().Select(b=> new {name = b.BookName , DoIOwnThisBook = OwnTable.GetData().Where()})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM