Linq的定制专栏

时间:2011-02-02 19:53:44

标签: c# linq

两种方法:

var books = _myIBookRepository.RetrieveAllBooks();  
var bokexamples = _myIbokexamples Repository.RetrieveAllBookExample();

两个数据库表:

BookExample

  • BokExampleID(主键)
  • BookID(外键)
  • OrderDetailID(外键)

  • BookID(主键)
  • KategoryID(外键)
  • LanguageID(外键)
  • 标题

BookID是表Book

中的BookExample表中的外键

如果orderdetailID为NULL,则意味着此specfik bookexample在商店中可用

目标:
显示两列“标题”和“库存可用”。 “库存可用”是数据库中不存在的自定义列。 “库存可用”应包含数字,例如2本书的标题....可用。

问题:
有问题在Linq中找到正确的源代码以显示这两列。

// Fullmetalboy

2 个答案:

答案 0 :(得分:2)

var query = from b in books
            select new
            {
                Title = b.Title,
                StockAvailable = bookexamples.Count(be => 
                        be.BookID == b.BookID && 
                        be.OrderDetailID == null
                    )
            };

如果我理解你的问题,这应该是你正在寻找的。

答案 1 :(得分:1)

您可以使用另一个以您想要的形式封装BookExample类的类,例如:

public class BookSummary
{
    public int BookID {get; set; }
    public int BookExampleID {get; set; }
    public bool StockAvailable {get; set; }
    public string Title {get; set; }
}


var books = from b in _myIbokexamples Repository.RetrieveAllBookExample().Include("Book") // I'm assuming that's there, lol
            select new BookSummary
            {
                BookID = b.BookID,
                BookExampleID = b.BookExampleID,
                StockAvailable = b.OrderDetailID == null,
                Title = b.Book.Title
            };