如何使用linq +泛型列表 [英] How to use linq + generic list

查看:91
本文介绍了如何使用linq +泛型列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



之前我传递了单个参数,现在我试图从通用列表中传递多个值。

我需要使用条件通用列表列数据而不是值。我不知道如何使用它。

列表< RoleView> intRoleID 







 var Rights =来自main.Elements中的用户(角色)
其中 intRoleID == Convert.ToInt32(user.Element(RoleID)。Value)
select new
{
RoleID = user .Element(RoleID)。Value,
MenuID = user.Element(MenuID)。Value,
Url = user.Element(Url)。Value
};





我的尝试:



i尝试做循环以将列值构造为字符串然后将其传递到那里

解决方案

如果我理解正确,这样的事情应该有效:

  var 权利= 来自 user  in  main.Elements(  Role
where intRoleID.Contains(Convert.ToInt32(user.Element( RoleID)。值))
选择 new
{
RoleID = user.Element( RoleID)。值,
MenuID = user.Element( MenuID)。值,
Url = user.Element( Url)。价值
};


我不确定我是否理解正确,但是......



好​​像,您希望通过传递 id 列表< RoleView> c>找到。对于此类要求,您可以使用 Where + 任何方法。看看例子:

  void  Main()
{

列表<角色> rules = new List< Role>();
for int i = 1 ; i< = 10 ; i ++)
rules.Add( new 角色(i ));

int [] rules2find = new int [] { 1 5 9 };

var filteredlist = rules
.Where(x => rules2find.Any(y => x.RoleID == y))
.ToList();

foreach (角色r filteredlist中)
{
Console.WriteLine(r.RoleID);
}
// 返回ID = {1,5,9}

}

public class 角色
{
private int id = 0 ;

public 角色( int _id)
{
id = _id;
}

public int RoleID
{
get { return id;}
set {id = value ;}
}
}





详情请见:

Enumerable.Where(TSource)方法(IEnumerable(TSource),Func(TSource,Boolean))(System.Linq) [ ^ ]

Enumerable.Any(TSource)方法(IEnumerable(TSource),Func(TSource,Boolean))(系统.Linq) [ ^ ]


Hi,
previously i passed the single parameter now im trying to pass multiple values from the generic list .
I need to use where condition generic list column datas instead of value . i dont know how to use this.

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
                       };



What I have tried:

i tried do loop to construct the column values as string then pass it there

解决方案

If I've understood you correctly, something like this should work:

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
             };


I'm not sure i've understood you correctly, but...

Seems, you want to filter List<RoleView> by passing list of id's to find. For such of requirement, you can use Where + Any methods. Take a look at example:

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;}
	}
}



For further details, please see:
Enumerable.Where(TSource) Method (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)[^]
Enumerable.Any(TSource) Method (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)[^]


这篇关于如何使用linq +泛型列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆