1

クエリにいくつかのフィルターを適用する必要がある状況があるため、フィルターを表すクラスがあります。

public class ReportNoteFilterDto
{
    public int Year { get; set; }
    public int Month { get; set; }
}

このフィルターに従ってデータを選択する必要があります。

var query = _db.User;

if (filter.Month > 0 && filter.Month <= 12)
    query.Select(u => new {
        User = u,
        Notes = u.Notes.Where(n => n.Begin.Month == filter.Month)
    });

if (filter.Year > 2011)
    query.Select(u => new
    {
        User = u,
        Notes = u.Notes.Where(n => n.Begin.Year == filter.Year)
    });

var results = query.Include("Notes.Foo.Bar").ToList(); //doesn't work

Notes.Foo.Bar も選択する必要があります。

この複数のフィルターを実行するにはどうすればよいですか?

4

1 に答える 1

1

query最初のクエリの結果を変数に代入しませんでした

同様の問題がどのように解決されたかをここで確認できます。

class Program
{
    //A simple class to hold the results
    public class Result
    {
        public string Item { get; set; }

        public IQueryable<string> Collection { get; set; }
    }

    static void Main(string[] args)
    {
        var list1 = new List<Result>();
        var objects = list1.Select(o => new Result { Item = o.Item, Collection = o.Collection.Where(a=> a.Length == 10) });
        if(true)
           objects = objects.Select(o => new Result { Item = o.Item, Collection = o.Collection.Where(a=> a.Length > 15) });
    }
}
于 2012-12-03T19:32:44.197 に答える