首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问控制器中查询返回列表的值

访问控制器中查询返回列表的值
EN

Stack Overflow用户
提问于 2013-10-10 14:29:49
回答 3查看 254关注 0票数 1

这是我的时间表类

代码语言:javascript
复制
[Table("Schedules", Schema = "Expedia")]
public  class Schedule
    {

        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int ScheduleId { get; set; }

        [ForeignKey("Inventory")]
        public int FlightId { get; set; }
        public FlightInventory Inventory { get; set; }

        [Display(Name = "Departure city")]
        public string DepartureCity { get; set; }

        [Display(Name = "Arrival city")]
        public string DestiationCity { get; set; }

        [Display(Name = "Departure date")]
        [Required]
        public string DepartureDate { get; set; }

        [Required]
        [Display(Name = "Arrival date")]
        public string ArrivalDate { get; set; }

        [Required]
        [Display(Name = "Departure Time")]
        public string Departure { get; set; }

        [Required]
        [Display(Name = "Arrival Time")]
        public string Arrival { get; set; }

        [Display(Name = "Price/Ticket")]
        public int Price { get; set; }
    }
}

下面是我的context类

代码语言:javascript
复制
 public class UsersContext : DbContext
 {
     public UsersContext() 
         : base("Expedia") { }

     public DbSet<Schedule> schedules { get; set; }
 }

下面是返回查询结果的函数:

代码语言:javascript
复制
 public dynamic Details(int ScheduleID)
 {
     var query =(from f in db.schedules.Where(f => f.ScheduleId== ScheduleID)
                 select new
                 {
                     f.ScheduleId,
                     f.DepartureDate,
                     f.ArrivalDate,
                     f.Departure,
                     f.Arrival,
                     f.DepartureCity,
                     f.DestiationCity,
                     f.Inventory.provider,
                     f.Inventory.nonstop,
                     f.Price,
                     f.Inventory.Available
                 }).ToList();

     return query.AsEnumerable();
 }

当我在我的控制器中调用它时:

代码语言:javascript
复制
var result= x.Details(selectedID);

结果变量显示null值,尽管查询返回一个值。

如何在控制器中访问查询结果?

请提供任何链接,参考,提示。

EN

Stack Overflow用户

发布于 2013-10-10 15:14:13

首先:当您调用ToList()AsEnumerable()扩展方法时,您的查询将立即执行,这会在返回大量数据的情况下影响性能。而且你不会在foreach循环中获得 You 的优势。

Second:为什么要使用dynamic类型?您可以为返回的数据定义一个类,而不是使用匿名类型,并从您的方法返回这个类。而且,我猜,您的方法应该只返回一个item或null (如果没有具有指定索引的item ),这样您就可以使用FirstOrDefault()扩展方法。

总结一下:

代码语言:javascript
复制
public class YourReturnType
{
    public int ScheduleId {get; set;}
    // other properties
}

public YourReturnType Details(int ScheduleID)
{
    var scheduleItem = db.schedules.FirstOrDefault(f => f.ScheduleId== ScheduleID);

    if (scheduleItem == null) return null;

    return new YourReturnType 
    {
        ScheduleId = scheduleItem.ScheduleId,
        // assign other properties
    };
}

编辑:如果你返回一个匿名类型的集合,并且你的方法的返回类型是动态的来查询这个集合,你应该将它转换为合适的类型。如果你想通过索引访问项目,那么你应该将它转换为IList:

代码语言:javascript
复制
var result = ((IList)Details(SomeId))[index];
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19288601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档