如何使用linq +泛型列表 [英] How to use linq + generic list
问题描述
之前我传递了单个参数,现在我试图从通用列表中传递多个值。
我需要使用条件通用列表列数据而不是值。我不知道如何使用它。
列表< 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 $ c $的列表来过滤
列表< 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 filterList<RoleView>
by passing list ofid's
to find. For such of requirement, you can useWhere
+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屋!