私はasp.net webapiを使用している既存のプロジェクトで作業しています。私はLinqを初めて使っており、プロジェクトコードを書いたチームはすべて消えています。linq式関数の動的ソート
は、私はそのようなWeb APIのcontrolllerで目的球があります。
public IQueryable<AccessTypeDTO> GetAccessTypes(int pageIndex = 1, int pageSize = 25)
{
var model = db.AccessTypes.AsQueryable();
return model.Select(AccessTypeDTO.SELECT).Take(pageSize);
}
AccessTypeDTO
私たちのビューモデルを、我々はドメインモデルがEF基づいて持って
AccessType
DMは以下の通りです:
AccessTypeDTO
VMのマッピングとデータ取得は、次のようになります。
public class AccessTypeDTO
{
public int AccessTypeID { get; set; }
public string AccessTypeName { get; set; }
public static System.Linq.Expressions.Expression<Func<AccessType, AccessTypeDTO>> SELECT =
x => new AccessTypeDTO
{
AccessTypeID = x.AccessTypeID,
AccessTypeName = x.AccessTypeName
};
}
私の新しいタスクは結果のページングと秩序を実装するので、次のように私のWeb API関数は次のようになります。
public IQueryable<AccessTypeDTO> GetAccessTypes(int pageIndex = 1, int pageSize = 25, string orderBy = "AccessTypeID")
{
var collection= db.AccessTypes.AsQueryable();
return collection.Select(AccessTypeDTO.SELECT).Skip((pageIndex - 1) * pageSize).Take(pageSize);
}
主な問題は、私はスキップ機能することを構築しています機能でありますスキップする前にコレクション "コレクション"をソートする必要があります。 どうすればこのコレクションを並べ替えることができますか? 私は100以上のコントローラを更新し、このようなページングと並べ替えを行い、並べ替えを行うために、各コントローラと各列のスイッチを書き込む時間がないことに注意してください。
ありがとうございます。私はスキップがあるべきだと思う:.Skip((pageIndex - 1)* pageSize).Take(pageSize); どのようにフィールドの動的に注文を行うことができますか? – Mohammad