我想这样做但是当我想使用except运算符时它不起作用:
此帖子重复: (Retrieve an object from entityframework without ONE field)
并且:Exclude a field/property from the database with Entity Framework 4 & Code-First
using (var db = new DEntities())
{
var ticket = db.Tickets
.Include(o => o.Ticket)
.Except(o => o.AttachmentFile)
.Where(o => o.TicketID == ticketID).ToList();
}
我希望在没有AttachmentFile
的情况下获得所有表格。
答案 0 :(得分:7)
Except
是一个set减法运算符 - 您可以通过提供与原始集相同类型的元素来使用它,以请求从原始集中删除Except
集的所有元素。
这不是你想要在这里实现的 - 你的任务似乎是一个简单的过滤:
ticket = db.Tickets
.Include(o => o.Ticket)
.Where(o => o.AttachmentFile == null && o.TicketID == ticketID)
.ToList();
这会将所有带附件的门票排除在外,要求AttachmentFile
为null
。
(评论)我只是想忽略o.attachmentFile,如果它是null,我不想得到它。
这是不同的:EF does not support lazy loading of individual properties,所以除非将附件拆分在自己的表中(如果您经常在没有附件的情况下查询票证,我建议您这样做),您应该只选择您想要获得的字段: / p>
ticket = db.Tickets
.Include(o => o.Ticket)
.Where(o => o.TicketID == ticketID)
.Select(o => new MyObject(o.Attr1, o.Attr2, /*and so on, but no AttachmentFile */))
.ToList();
答案 1 :(得分:3)
您可以使用select语句。
var ticket = db.Tickets
.Include(o => o.Ticket)
.Where(o => o.TicketID == ticketID)
.Select( o => new { o.TicketID, o.Column1, o.Column2 }).ToList();
用适当的列名替换o.Column1,o.Column2等。这将返回包含指定列的匿名对象。