2012-08-16 19 views
6

Tôi sử dụng EntityFramework, tôi đang truy vấn và trả về một phần dữ liệu bằng cách sử dụng các loại ẩn danh. Hiện tại tôi đang sử dụng IQueryable<dynamic>, nó hoạt động, nhưng tôi muốn biết nếu đây là cách thích hợp để làm điều đó hoặc nếu có một số kiểu dữ liệu trả về khác mà tôi không biết.IQueryable cho các loại vô danh

public IQueryable<dynamic> FindUpcomingEventsCustom(int daysFuture) 
{ 
    DateTime dateTimeNow = DateTime.UtcNow; 
    DateTime dateTimeFuture = dateTimeNow.AddDays(daysFuture); 
    return db.EventCustoms.Where(x => x.DataTimeStart > dateTimeNow & x.DataTimeStart <= dateTimeFuture) 
     .Select(y => new { y.EventId, y.EventTitle, y.DataTimeStart}); 
} 
+0

Sự cố 'IQueryable' hoặc phần 'động' của kiểu trả về là gì? – nemesv

+0

hi nemesv, không sao cả, tôi muốn biết thêm về C# và kiểu ẩn danh vì lý do này mà tôi hỏi. Cảm ơn bạn đã bình luận của bạn – GibboK

Trả lời

9

Thông thường, bạn chỉ sử dụng các loại ẩn danh trong phạm vi của một phương pháp. Bạn không trả về các kiểu ẩn danh cho người gọi. Nếu đó là những gì bạn muốn làm, bạn nên tạo một lớp học và trả lại rằng:

public class Event 
{ 
    private readonly int _eventId; 
    private readonly string _eventTitle; 
    private readonly DateTime _dateTimeStart; 

    public Event(int eventId, string eventTitle, DateTime dateTimeStart) 
    { 
     _eventId = eventId; 
     _eventTitle = eventTitle; 
     _dateTimeStart = dateTimeStart; 
    } 

    public int EventId { get { return _eventId; } } 
    public string EventTitle { get { return _eventTitle; } } 
    public DateTime DateTimeStart{ get { return _dateTimeStart; } } 
} 



public IQueryable<Event> FindUpcomingEventsCustom(int daysFuture) 
{ 
    DateTime dateTimeNow = DateTime.UtcNow; 
    DateTime dateTimeFuture = dateTimeNow.AddDays(daysFuture); 
    return db.EventCustoms 
      .Where(x => x.DataTimeStart > dateTimeNow 
         && x.DataTimeStart <= dateTimeFuture) 
      .Select(y => new Event(y.EventId, y.EventTitle, y.DataTimeStart)); 
} 
+1

Tôi đã suy nghĩ để trở về loại vô danh như là kết quả của hành động là JSON – GibboK

+0

@ GibboK: Tôi không chắc chắn tôi làm theo. Tôi không thấy "hành động" hoặc JSON ở đây –

+0

vâng tôi chưa tải lên mã đầy đủ, cảm ơn câu trả lời của bạn – GibboK