Linq - Выберите строки, которые находятся в списках - PullRequest
1 голос
/ 19 ноября 2011

У меня есть таблица «Действия», в которой есть поля типа Player, Game, Type - ale, связанные с другими таблицами. У меня также есть два списка в моем коде c #:

    List<Player> playersForStats
    List<Game> gamesForStats

Теперь я хочу выбрать строки из Действия, в которых (поле) Игроки находятся в списке PlayersForStats и (поле) Игра находятся в списке gamesForStats. Как я могу сделать это с помощью Linq? Я должен использовать внутреннее соединение или что-то еще?

Ответы [ 3 ]

1 голос
/ 19 ноября 2011

Я бы предположил, что ваш список действий назван как действия:

actions.Where(x=>playersForStats.Contains(x.Player) && gamesForStats.Contains(x=>x.Game));

На самом деле просто нужно выполнить поиск, если игрокиForStats и gamesForStats содержат игрока и игру, относящиеся к действию.

1 голос
/ 19 ноября 2011

Примерно так должно работать, если ваш объект имеет правильный метод equals:

var oActions = ..
var oData = oActions.Where(c=> c.Players.TrueForAll(p => playersForStats.Contains(p)) && gamesForStats.Contains(c.Game));

Предполагая, что c.Players равно List, а c.Game равно полю.

0 голосов
/ 19 ноября 2011

Примерно так:

class Program
{
    static void Main(string[] args)
    {
        List<Action> actions = new List<Action>();
        List<Game> gamesForStats = new List<Game>();
        List<Player> playersForStats = new List<Player>();

        List<Action> result = (from oAction in actions
                               join game in gamesForStats on oAction.Game equals game.GameName
                               join player in playersForStats on oAction.Player equals player.PlayerName
                               select oAction).ToList();

        Console.ReadLine();
    }
}

public class Player
{
    public string PlayerName { get; set; }
}

public class Game
{
    public string GameName { get; set; }
}

public class Action
{
    public string Player { get; set; }
    public string Game { get; set; }
    public string Type { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...