18

以下の私のコードの問題は何ですか?一致するレコードがデータベースに存在する場合でも、アイテムは返されません。それが間違っている場合、どうすれば自分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;
}
4

4 に答える 4

17

私の意見では、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>();
   }
于 2012-04-11T01:30:12.613 に答える
6

取得している理由は、匿名型に基づくをnullに変換しようとしているためです(2つのフィールドを持つ匿名型のインスタンスを作成します-および)それを機能させるには、パーツを削除する必要があります。IQueryableIEnumerable<TimelineItem>new { t.Description, t.Title }DescriptionTitleSelect

Descriptionとのみを選択する場合は、次の2つのフィールドを使用して名前付きTitleタイプを作成し、そのタイプのを返します。IEnumerable

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 };
}
于 2012-04-11T01:10:04.683 に答える
0

自動マッパーを使用して変換IQueryableしますIEnumerable

 StudentsModel IEmodel = new StudentsModel();//IEnumerable 
            try {
                var Queryablemodel = _tblStudents.GetQueryable().FirstOrDefault(x => x.CNIC == strCNIC && x.LoginPassword == strPassword);//IQueryable
               //conversion with Auto Mapper
                IEmodel = AutoMapper.Mapper.Map(Queryablemodel , IEmodel ); 
            }
            catch(Exception ex){
                throw ex;
            }
于 2015-10-02T05:16:06.473 に答える
0

IQueryableをIEnumerableに変換するためのビジネスユースケースは何ですか?IQueryableは、遅延または遅延したキャッシュされていないデータを提供しますが、IEnumerableは、即時または熱心なキャッシュされたデータを提供します。ただし、コンテキストレベルで遅延読み込みをオフにしている場合でも、すぐにデータを取得できます。

于 2020-05-21T22:17:10.413 に答える