我有Dictionary<int, List<string>>
enrolledStudents
key
是一个int,它是一个纸质代码。
value
是一个字符串列表,其中字符串是学生姓名
我想知道的是如何查看string s
enrolledStudents
是否在此列表中
例如
if(string s in List<string> of enrolledStudents){
return enrolledStudent.key;
}
答案 0 :(得分:1)
要获取特定学生的所有纸质代码,您可以这样做:
List<int> paperCodesForStudent = enrolledStudents
.Where(item => item.Value.Contains("studentName"))
.Select(item => item.Key)
.ToList();
您可以将此方法设为一个方法,并且还可以为名称检查添加不区分大小写的比较:
private static List<int> GetPaperCodesForStudent(string studentName,
Dictionary<int, List<string>> enrolledStudents)
{
return enrolledStudents
.Where(item => item.Value.Any(name =>
name.Equals(studentName, StringComparison.OrdinalIgnoreCase)))
.Select(item => item.Key)
.ToList();
}
答案 1 :(得分:0)
使用linq
QLayout.TakeAt(n)
请注意,此搜索是线性的。 如评论中所述,您可以重新创建另一个字典一次以优化搜索速度。
def create_sliders(self):
if len(self.sliders_list):
for sl in self.sliders_list:
sl.deleteLater()
self.sliders_list = []
for index in range(self.model.rowCount()):
if self.model.item(index).checkState():
slid = QSlider(Qt.Horizontal)
self.sliders.addWidget(slid)
self.sliders_list.append(slid)
现在你可以使用pagemap从这样的学生那里获取页面。
return enrolledStudents.FirstOrDefault(kvp => kvp.Value.Contains(s)).Key;
答案 2 :(得分:0)
Dictionary<int, List<string>> enrolledStudents = new Dictionary<int, List<string>>();
bool any = enrolledStudents.Any(x => x.Value.Contains("myString"));
或者如果你想要第一把钥匙
var key = enrolledStudents.FirstOrDefault(kvp => kvp.Value.Contains(s))?.Key ?? "";
如果FirstOrDefault()返回null,请注意单个问号。
答案 3 :(得分:0)
没有LINQ的解决方案
// 1-st解决方案
Dictionary<int, List<string>> group = new Dictionary<int, List<string>>();
List<string> newList = new List<string> { "Orange", "Strawberry", "Banana"};
group.Add(1, newList); //Group of Fruits
newList = new List<string> { "Hulk", "Spiderman", "Batman" };
group.Add(2, newList); //Group of Super-Heroes
int GroupKey = 0;
foreach(var groupItem in group)
{
foreach(var stringValue in groupItem.Value)
{
if(stringValue == "Spiderman")
{
GroupKey = groupItem.Key;
break;
}
}
if(GroupKey > 0)
break
}
//我认为你应该在你的情况下使用的第二种解决方案 (因为每个学生只有一个键(数字)也许最好使用字符串而不是List,只有当你和学生小组一起工作时才应该考虑第一个解决方案)
Dictionary<int, string> enrolledStudents = new Dictionary<int, string>();
enrolledStudents.Add(1, "Jamie Fox"); //Student 1
enrolledStudents.Add(2, "Arnold Spenser"); //Student 2
enrolledStudents.Add(3, "Jack & Jones"); //Student 3
int StudentNumber = 0;
foreach (var student in enrolledStudents)
{
if(student.Value == "Arnold Spenser")
{
StudentNumber = student.Key;
break;
}
}