我想选择手机以" 02"开头的特定会员。 我有班级学生 构造函数
public Student(string firstName, string lastName, int fn, int tel, string email, List<int> allMarks, int groupNumber)
制作List<Student> students
。
而我想要做的就是选择他们的电话开头的成员&#39; 02&#39; (对于我的例子)
我试试这个:
第一
var tel = students.Where(x => x.Tel.ToString().StartsWith("02")).ToArray();
Print(tel);
第二
var testTel = students
.Select(x => x.Tel.ToString().Substring(0, 2) == "02")
.Select(x => x);
Print(testTel);
第三
var someTel =
from t in students
where t.Tel.ToString().Substring(0, 2).Equals("02")
select t.Tel;
还有一些......但最后我将(转换/ int Tel转换为字符串Tel /)并开始工作。
我想问一下,当int Tel
列表的一部分时,有没有办法选择这个成员:
List<Student> students = new List<Student>()
{
new Student("Nataly", "Adams", 8222, 029669, "hot@mail.com",
new List<int>{2, 3, 3, 5, 6}, 2),
new Student("Ben", "Dueyn", 8215, 0886996321, "hot@mail.com",
new List<int>{4, 5, 4, 5, 5}, 2),
};
答案 0 :(得分:2)
将tel
属性设置为字符串,然后您可以像这样简单地使用lambda表达式:
var tel = students.Where(x => x.Tel.StartsWith("02")).ToList<Student>();
为什么你应该使用带有电话号码的字符串的答案,你可以在这里找到 - Link
答案 1 :(得分:0)
在你的问题的评论中已经说出了最重要的部分。再次迭代:
获得所需内容的最简单方法是更改学生班级,因此电话号码的类型为String
。正如Jon Skeets链接的答案一样,这也使您能够存储每个可能的特殊字符,如破折号,连字符,括号等。
所以改变你的课程:
public class Student
{
public Student(string fname, string lname, int fn, string tel, string mail, List<int> marks, int groupNumber)
{
this.firstName = fname;
this.lastName = lname;
this.fn = fn;
this.tel = tel;
//...
}
//...
public string tel { get; set; }
//...
}
您可以通过以下方式轻松获得所需内容:
var result = students.Where(x => x.tel.StartsWith("02"));