2

以下のクエリを使用して、Entity Framework Linqのすべての列(さらに20個)を取得します。メモリ不足の例外のため、2つだけ取得したいと思います。1つは「FileName」、もう1つは「FilePath」です。コードを変更するにはどうすればよいですか?

var query = DBContext.Table1
    .Where(c => c.FacilityID == facilityID && c.FilePath != null && c.TimeStationOffHook < oldDate)
    .OrderBy(c => c.FilePath)
    .Skip(1000)
    .Take(1000)
    .ToList();
foreach(var t in query)
{
    Console.WriteLine(t.FilePath +"\\"+t.FileName);
}
4

3 に答える 3

11
var query = DBContext.Table1.Where(c => c.FacilityID == facilityID && c.FilePath != null && c.TimeStationOffHook < oldDate)
                            .OrderBy(c => c.FilePath)
                            .Skip(1000)
                            .Take(1000)
                            .Select(c => new { c.FilePath, c.FileName })
                            .ToList();
foreach(var t in query)
{
    Console.WriteLine(t.FilePath +"\\"+t.FileName);
}

を使用する必要がありますSelect

于 2013-02-06T13:51:36.337 に答える
4

2つの列を選択するだけです。

DBContext.Table1.Select(c => new { c.FileName, c.FilePath });
于 2013-02-06T13:51:50.313 に答える
2

のようなものはどうですか

using (var entity = new MyModel(ConnectionString))
            {
                var query = (from myTable in entity.theTable
                            where myTable.FacilityID == facilityID &&
                               myTable.FilePath != null &&
                               myTable.TimeStationOffHook < oldDate
                            orderby myTable.FilePath
                            select new
                            {
                                myTable,FileName,
                                myTable.FilePath
                             }).Skip(1000).Take(1000).ToList();
//do what you want with the query result here
            }
于 2013-02-06T13:58:53.100 に答える