OrderBy (): мне нужно постраничать записи, но меня не волнует порядок: как указать KeySelector по умолчанию? - PullRequest
1 голос
/ 28 октября 2010

Мне нужно просмотреть записи, но я не знаю полей сущности. Любой способ OrderBy Key (какой бы он ни был) или просто указать какой-нибудь OrderBy Lambda по умолчанию?

Например, я могу сделать это с помощью предложения Where, не зная свойств сущности:

 var myRecords = DC.Products.Where( p => p);

В этом случае для Skip and Take требуется OrderBy, но я не знаю полей Key of Entity.

EDIT:

Когда у меня нет OrderBy () при использовании Skip (). Take (), я получаю эту ошибку:

The method 'Skip' is only supported for sorted input in LINQ to Entities.
The method 'OrderBy' must be called before the method 'Skip'.

1 Ответ

1 голос
/ 28 октября 2010

Для получения имени свойства Key вам потребуется использовать объект MetadataWorkspace .Как только вы получите его имя, вы можете создать динамический запрос с помощью EntitySQL для получения результатов или с помощью методов Query Builder для создания EntitySQL для васкак я показал ниже, они похожи на методы LINQ to Entities, за исключением того, что они принимают строку вместо Lambdas:

var keyName = context
    .MetadataWorkspace
    .GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace)
    .BaseEntitySets.First(meta => meta.ElementType.Name == "Product")
    .ElementType.KeyMembers.Select(k => k.Name).FirstOrDefault();

    var query = context.Products.OrderBy("it." + keyName);
    var anotherQuery = context.Products.Where("it." + keyName + " = 1" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...