sencsk Ответов: 2

Как использовать LINQ + generic list


Привет,
раньше я передавал один параметр, а теперь пытаюсь передать несколько значений из общего списка .
Мне нужно использовать условие WHERE общий список данные столбца, а не значение . я не знаю, как это использовать.
List<RoleView> intRoleID 



var Rights = from user in main.Elements("Role")
                         where intRoleID == Convert.ToInt32(user.Element("RoleID").Value)
                      select new
                       {
                           RoleID = user.Element("RoleID").Value,
                           MenuID = user.Element("MenuID").Value,
                           Url = user.Element("Url").Value
                       };


Что я уже пробовал:

я попробовал сделать цикл, чтобы построить значения столбца в виде строки, а затем передать его туда

Maciej Los

Покажите нам, как вы передаете эти множественные значения в список?

2 Ответов

Рейтинг:
0

Richard Deeming

Если я правильно вас понял, что-то вроде этого должно сработать:

var Rights = from user in main.Elements("Role")
             where intRoleID.Contains(Convert.ToInt32(user.Element("RoleID").Value))
             select new
             {
                 RoleID = user.Element("RoleID").Value,
                 MenuID = user.Element("MenuID").Value,
                 Url = user.Element("Url").Value
             };


Karthik_Mahalingam

5! я думаю правильно,
если вы переименуете intRoleId в lstintRoleId это будет легче понять

sencsk

спасибо за ваши комментарии . который вы предоставили soln правильно, но в моем случае мне нужен soln2.

Рейтинг:
0

Maciej Los

Я не уверен, что правильно вас понял, но ... ..

Кажется, вы хотите фильтровать List<RoleView> передавая список id's находить. Для такого требования вы можете использовать Where + Any методы. Взгляните на пример:

void Main()
{

	List<Role> rules = new List<Role>();
	for (int i=1; i<=10; i++)
		rules.Add(new Role(i));
	
	int[] rules2find = new int[]{1,5,9};
	
	var filteredlist = rules
		.Where(x=>rules2find.Any(y=>x.RoleID ==y))
		.ToList();
	
	foreach(Role r in filteredlist)
	{
		Console.WriteLine(r.RoleID);
	}
        //returns rules with ID={1,5,9}
	
}

public class Role
{
	private int id = 0;
	
	public Role(int _id)
	{
		id = _id;
	}
	
	public int RoleID
	{
		get {return id;}
		set {id = value;}
	}
}


Для получения более подробной информации, пожалуйста, смотрите:
Перечислимый.Где(TSource) Для (Интерфейс IEnumerable(Метод), Функция(Метод Логических)) (Системы.В LINQ)[^]
Перечислимый.Любой(TSource) Для (Интерфейс IEnumerable(Метод), Функция(Метод Логических)) (Системы.В LINQ)[^]