Ren*_*nny 13 linq entity-framework c#-4.0
我的代码下面有什么问题.即使db中存在匹配的记录,它也不会返回任何项目.如果错误怎么能将我的IQueryable转换为IEnumerable?
public IEnumerable<TimelineItem> TimeLineItems { get; set; }
public IEnumerable<TimelineItem> GetTimeLineItems(int SelectedPID)
{
TimeLineItems = (from t in db.TimelineItems
where t.ProductID == SelectedPID
select new { t.Description, t.Title })as IEnumerable<TimelineItem>;
return TimeLineItems;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Tra*_*s J 10
在我看来,如果你打算使用linq然后接受它,摆脱那种深奥的符号:)
public IEnumerable<TimelineItem> GetTimeLineItems(int SelectedPID)
{
return db.TimelineItems.Where(tl => tl.ProductID == SelectedPID)
.Select( tl => new TimelineItem {
Description = tl.Description,
Title = tl.Title })
.AsEnumerable<TimelineItem>();
}
Run Code Online (Sandbox Code Playgroud)
您得到的原因null是因为您试图将IQueryable基于匿名类型的转换为IEnumerable<TimelineItem>(new { t.Description, t.Title }创建具有两个字段的匿名类型的实例 -Description和Title) 您应该删除该Select部分以使其工作。
如果您只想选择Descriptionand Title,请使用这两个字段创建一个命名类型,并返回IEnumerable该类型的an :
public class TitleDescr {
public string Title {get;set;}
public string Description {get;set;}
}
public IEnumerable<TitleDescr> GetTimeLineItems(int SelectedPID)
{
return from t in db.TimelineItems
where t.ProductID == SelectedPID
select new TitleDescr { t.Description, t.Title };
}
Run Code Online (Sandbox Code Playgroud)