запрос с лямбда-выражениями и одним параметром равен нулю - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу сделать запрос с лямбда-выражением. Моя база данных - это база данных Cosmos. Я хочу отфильтровать два параметра, и один из них может быть нулевым.

Например, я хочу найти имя и фамилию, и один из них равен нулю.

Это то, что я пытаюсь:

var result = this._client.CreateDocumentQuery<Person>(
                    UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions)
                    .Where((f) => f.Name == Name && f.LastName == lastName )
                    .AsEnumerable()
                    .ToList();

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Может быть, вы можете работать с IQueryable:

IQueryable<Person> iPerson = this._client.CreateDocumentQuery<Person>(
                    UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions);

if(Name != null) iPerson = iPerson.Where(f => f.Name == Name);
if(lastName != null) iPerson = iPerson.Where(f => f.LastName == lastName)
return iPerson.AsEnumerable().ToList();
0 голосов
/ 12 ноября 2018

попробуйте что-то вроде этого:

var result = this._client.CreateDocumentQuery<Person>(
                    UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions)
                    .Where(f => f.Name == $"{Name ?? f.Name}") &&
                                f.LastName == $"{lastName ?? f.LastName}")  )
                    .AsEnumerable()
                    .ToList();
0 голосов
/ 12 ноября 2018

Так это?

var result = this._client.CreateDocumentQuery<Person>(
    UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions)
    .Where((f) => (f.Name == Name || (f.Name == null && f.LastName != null)) && (f.LastName == lastName || (f.LastName == null && f.Name != null))
    .AsEnumerable()
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...