0

この機能について助けが必要です...

最初のクエリは正常に機能します。

public List<Project> GetProjectByCustomerID(Int16 customerid)
        {
            try
            {
                using (YeagerTechEntities DbContext = new YeagerTechEntities())
                {
                    DbContext.Configuration.ProxyCreationEnabled = false;
                    DbContext.Database.Connection.Open();

                    IEnumerable<Project> project = DbContext.Projects.Where(p => p.CustomerID == customerid);

                    List<Project> myProjects = new List<Project>();

                    myProjects = project.ToList();

                    return myProjects;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

2 番目のクエリにはプロジェクト リストがあり、特定の列だけをクエリに戻したいのですが、「型 IQueryable Anonymoustype#1 を Generic.List に変換できません」というエラーが表示されます。設計時のコンパイル エラーは、"(s =>" の直前の SQL ステートメント全体にあります。

public List<Project> GetProjectByCustomerID(Int16 customerid)
        {
            try
            {
                using (YeagerTechEntities DbContext = new YeagerTechEntities())
                {
                    DbContext.Configuration.ProxyCreationEnabled = false;
                    DbContext.Database.Connection.Open();

                    List<Project> myProjects = new List<Project>();

                    myProjects = DbContext.Projects.Include("TimeTrackings").Where(p => p.CustomerID == customerid && p.Category.CategoryID == 5 && p.Customer.City == "NY" && p.Status.StatusID == 1 && p.Priority.PriorityID == 2).Select(s => new
                    {
                        pridesc = s.Priority.Description,
                        s.Notes,
                        stadesc = s.Status.Description
                    });

                    return myProjects;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

3 番目のクエリでは、必要な列を選択できます。「プロジェクト」変数を返すことができないことを除いて、クエリ全体は問題ありません。次のデザイン タイム コンパイル エラーが発生します。

public List<String> GetProjectByCustomerID(Int16 customerid)
        {
            try
            {
                using (YeagerTechEntities DbContext = new YeagerTechEntities())
                {
                    DbContext.Configuration.ProxyCreationEnabled = false;
                    DbContext.Database.Connection.Open();

                    var project = DbContext.Projects.Include("TimeTrackings").Where(p => p.CustomerID == customerid && p.Category.CategoryID == 5 && p.Customer.City == "NY" && p.Status.StatusID == 1 && p.Priority.PriorityID == 2).Select(s => new
                    {
                        pridesc = s.Priority.Description,
                        s.Notes,
                        stadesc = s.Status.Description
                    }).ToList();

                    return project;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

2 番目と 3 番目のクエリを返す正しい方法 (構文的にも) は何ですか?

コード ビハインドで 3 番目のクエリを実行し、"var" 変数をデータ ソースとしてグリッドにバインドできることがわかっています。ただし、中間層クラスからフロント エンドに 2 番目と 3 番目のクエリ タイプを正常に戻す方法を誰かが教えてくれれば、非常にありがたいです。

4

1 に答える 1

4

s またはsSelectではなく、メソッドで匿名型を作成しています。を返すため、最初のクエリは機能します。stringProjectList<Project>

プロジェクト全体ではなく、フィールドのサブセットのみが必要な場合は、必要なフィールドのみを保持する新しいクラスをSelect()作成し、匿名型を作成する代わりにそれを使用します。テクニックの図については、こちらを参照してください

于 2013-07-11T00:26:58.120 に答える