-1

この問題を解決するために、数日 (場合によっては数週間) を費やしました。次の階層にデータを整理しようとしている 2 つのテーブルがあります。以下は、これがどのようなものになるべきかの例です:

<ul><strong>PageTitle</strong>

<li>Category A</li>
<li>Category B</li>
<li>Category C</li>

LinQPad でクエリを正常に実行していますが、MVC では機能しません。これが私がMVCで使用しているコードです。

public IEnumerable<wl> List()
{
    IEnumerable<wl> wlTest;
    using (LibEntities _libEntity = new LibEntities())  {  
             wlTest = (from p in table1
                       join c in table2 on p.PK equals c.FK
                       group p by new { c.title } into g
                       select new wl
                        {
                          TitleName = g.Key.title,
                          Category = from p in g
                                     group p by g.cat_id into d
                                     select new wl{d.Key.cat_id}
                      }).ToList();

            return wlTest;

    }
}

wl クラス情報は次のとおりです。

public class wl
{
    public string TitleName { get; set; }
    public string Category { get; set; }
}

私は得続けます

タイプ 'LibraryProject.Model.wl' は、'System.Collections.IEnumerable' を実装していないため、コレクション初期化子で初期化できません。

さて、これは LinqPad での非常によく似たクエリです。

from f_a_p in Find_article_progs
join f_a in Find_articles on f_a_p.Prog_num equals f_a.DbProg 
where f_a_p.Parent_id == 183
group f_a by new {f_a_p.Prog_title} into d
select new {
    d.Key.Prog_title, 
    Links = from f_a in d
            group f_a by new {f_a.DbTitle} into c
            select new {
                c.Key.DbTitle
            }
}

誰でもこれで私を助けることができますか?

4

2 に答える 2

1

これが問題です:

select new wl{d.Key.cat_id}

ここで実際に何をしようとしているのかは明確ではありません (意味のない型名は実際には役に立ちません) が、次のようなものが必要になる場合があります。

select new wl { CategoryId = d.Key.cat_id }

これは、コレクション初期化子ではなく、オブジェクト初期化子になりました。

すでに. _ _ new wl_ wl同様に、プロパティが実際にコレクションでない限り、クエリのすべての結果ではなく、グループから単一のCategoryエントリを取得する必要があります。

ネーミングを改善し、何をしようとしているのか (およびデータ階層) の詳細を教えていただければ、さらにお役に立てるかもしれません。

(ちなみに、あなたが与えたクエリはLINQPadでもありません...)

于 2013-12-30T19:45:52.097 に答える
0

すでにタイトル名でg.Key.title_nameあるため、ここには入力しないで くださいg.Key

TitleName = g.Key.title_name  // wrong
TitleName = g.Key // correct

カテゴリを選択するときは、次のようなことをしたいと思います。

Categories = (from c in g 
               where c.TitleName == g.Key 
                 select c).ToList();

私はあなたの実体についてあまり知りません.あなたのクラス名は私を殺しています. したがって、あなたのエンティティに関する詳細情報を提供しない限り、これ以上のアドバイスはできません。

于 2013-12-30T19:56:55.240 に答える