0

これは、 https://stackoverflow.com/questions/1987485/conditionally-assign-c-var-as-elegant-as-it-getsにある関連トピックのフォローアップです 。

私が次のことをしている場合:

  var query = (SearchString == "" ?
    (
         from MEDIA in xdoc.Descendants("MEDIA")
                    select new
                    {
                        PLAY = MEDIA.Element("PLAY").Value,
                        PIC = MEDIA.Element("PIC").Value,
                        TTL = MEDIA.Element("TTL").Value
                    }
    ):


        from MEDIA in xdoc.Descendants("MEDIA")
                    where MEDIA.Element("TTL").ToString().ToLower().Contains(SearchString)
                    select new
                    {
                        PLAY = MEDIA.Element("PLAY").Value,
                        PIC = MEDIA.Element("PIC").Value,
                        TTL = MEDIA.Element("TTL").Value
                    }
    ) ;

クラスレベルで静的にするためにクエリタイプを宣言するにはどうすればよいですか?

あるいは、参照された投稿で、MarcGravellは別のアプローチを指摘しています

IQueryable<Part> query = db.Participant;
if(email != null) query = query.Where(p => p.EmailAddress == email);
if(seqNr != null) query = query.Where(p => p.SequenceNumber == seqNr);
...

私の場合、クエリをどのように宣言/再コーディングしますか?これが私のワイルドな試みです:)

   IEnumerable<XElement> query = xdoc.Descendants("MEDIA");
    if (SearchString != "" )
        query = query.Where(m => m.Element("TTL").ToString().ToLower().Contains(SearchString));

ありがとうございました。

4

1 に答える 1

0

クラス レベルで静的にするには、どのようにクエリ タイプを宣言すればよいでしょうか。

できません。匿名型は、まあ、匿名です...そのため、変数を宣言するために使用できる名前がありません。クエリのタイプはですが、コードでIEnumerable<something>を参照できません。somethingしたがって、クエリの結果を表す特定のクラスを作成し、匿名型の代わりに使用する必要があります。

于 2011-04-27T23:01:56.487 に答える