Найти что-то в списке объектов, где значение объекта равно строке - PullRequest
0 голосов
/ 12 февраля 2020

Мои классы

public class User
{
    [Key]
    public long Id {get;set;}
    public ICollection<AuthToken> Tokens { get; set; } = new List<AuthToken>();
}

public class AuthToken
{
    [Key]
    public long id { get; set; }
    public string Token { get; set; }
    public long Created { get; set; }
    public long Dispose { get; set; }
    public string Ip { get; set; }
    public string LocalisationInfo { get; set; }
    public string MachineInfo { get; set; }
}

Я хочу выбрать объект AuthToken, который string Token равен `` `123`

var user = cnx._Users
              .Where(x => x.Tokens.Contains(/*Tokens.Token object equal to 123 */))

В простом Where состоянии я могу сравните только два AuthToken объекта. Мне нужно сравнить AuthToken.Token строк.

Наконец, я хочу выбрать пользователя, который использовал Token, который я использовал. В этом случае его 123.

Ответы [ 2 ]

4 голосов
/ 12 февраля 2020

Вы можете «связать» несколько вызовов linq, чтобы получить желаемый результат ...

var user = cnx._Users.Where(u => u.Tokens.Any(atoken => atoken.Token == "123")).FirstOrDefault();
1 голос
/ 12 февраля 2020

Вы также можете достичь этого, как показано ниже

var user = cnx._Users.Where(x => x.Tokens.FirstOrDefault(t => t.Token == "123") != null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...