Вариант 1
Вы можете пойти, не объявляя mainDetails
с самого начала, сделав что-то вроде:
public HttpResponseMessage GetDetails(string msn, DateTime dt)
{
try
{
int mainCount = giveMainCount(msn, dt);
if (mainCount == 0)
{
return Request.CreateResponse(HttpStatusCode.OK, new { details = null });
}
int mainInterval = mainCount / 500;
var mainDetails = kesc.tj_xhqd
.AsNoTracking()
.Where(m => (m.zdjh == msn) && (m.sjsj >= dt))
.AsEnumerable()
.Select((x, i) => new { MSN = x.zdjh, PingDateTime = x.sjsj, PingValue = x.xhqd, i = i })
.Where(x => x.i % mainInterval == 0)
.ToList();
return Request.CreateResponse(HttpStatusCode.OK, new { details = mainDetails });
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
Делая это таким образом, mainDetails
будет тем, что вы хотите, List
этого анонимного типа с псевдонимами.
Вариант 2
В качестве альтернативы вы можете создать класс для псевдонимов (используйте то, что вы хотите вместо AliasClassName
):
public class AliasClassName
{
public string MSN { get; set; }
public Nullable<System.DateTime> PingDateTime { get; set; }
public string PingValue { get; set; }
public int i { get; set; }
}
Затем объявите mainDetails
как List
этого:
var mainDetails = new List<AliasClassName>();
А затем сделайте:
.Select((x, i) => new AliasClassName { MSN = x.zdjh, PingDateTime = x.sjsj, PingValue = x.xhqd, i = i })