asp.net处理参数个数不确定的函数(c#)

有一个student的class,还有一个club的class
student的class有一个list<club>

比如说一共有7个student的object,4个club的object
用户选择了club 2, club3...(这个club的数量是不确定的
就会筛选出list<club>中同时有club2,club3的所有student对象
或者说就是找出了所有同时参加这两个社团的学生....

关于筛选,个人的思路是要用到参数不确定的函数..
java里是(int a,..) 不是c#里是如何处理的, 是用object[]么?
也想请教一下之后筛选的思路

多谢了!

//假设student的对象列表是students
//假设student里的list<club>的名字是clubs
//假设club有一个唯一标识的字段为id,因为club是引用对象,所以直接==比较可能不行
//假设目标社团为club1,club2
students.Where(s => s.clubs.Any(t => t.id == club1.id) && s.clubs.Any(t => t.id == club2.id)).ToArray();

也可以写个方法

public student[] FilterWithClubs(student[] students, params club clubs)
{
    return students.Where(s => clubs.All(t => s.clubs.Any(u => u.id == t.id))).ToArray();
}

追问

多谢请教,想问一下(s => clubs.All(t => s.clubs.Any(u => u.id == t.id))) 的思路是什么样的? linq?

以及在model中唯一标识的字段是如何设置的..?
不好意思刚刚开始学.net..还在研究之中....如果觉得解释起来麻烦,可以告诉我该看的相关教程...多谢了

追答

嗯,名字也可以的,就是和别的都不一样的,在数据库来说就是主键的字段。
思路就是在一个学生参加的社团中,包含所提供的社团列表中的每一个的社团。

追问

多谢你的耐心指教。不好意思可能是我表达不清楚,(s => clubs.All(t => s.clubs.Any(u => u.id == t.id))) 中的t和u是什么变量呢...?

追答

这是Lambda表达式,也就是简单的方法。s,t,u分别是执行这些Lambda表达式的参数。s是学生对象,t是club列表里的社团对象,u是学生参加的社团里的社团对象。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-15
object[]或者params object[]都可以,不过后者更灵活。另外我感觉你的题意不清楚,不妨用伪代码的形式写出你想实现的,然后再看是否有对应机制。本回答被网友采纳
第2个回答  2015-01-15
相似回答