我遇到了一个我无法解决的问题。:-)我必须找到所有包含某个子字符串的值,然后我必须取回键和值对。我必须实现一个系统,在这个系统中我必须制作一个SortedList,其中的相册是一个类,字符串当然是关键字
Albums alb = new Albums();
SortedList<string, Albums> list1 = new SortedList<string, Albums>();Albums类如下所示:
public class Albums : IComparable
{
public string albname;
public string name1;
public string releasedate;
public Guid albumID;
public Albums()
{
albumID = new Guid();
}
public override string ToString()
{
return "Album: " + Albname + "\t" + Releasedate;
}
public Albums(string albname, string releasedate)
{
this.albname = albname;
this.releasedate = releasedate;
}
public string Name1
{
get { return name1; }
set { name1 = value; }
}
public string Albname
{
get { return albname; }
set { albname = value; }
}
public string Releasedate
{
get { return releasedate; }
set { releasedate = value; }
}
public int CompareTo(object obj)
{
if (obj is Albums)
{
Albums other = (Albums)obj;
return albname.CompareTo(other.albname);
}
if (obj is string)
{
string other = (string)obj;
return releasedate.CompareTo(releasedate);
}
else
{
return -999;
}
}
}我最后试着把专辑放到一个LinkedList里:
LinkedList<string> albm1 = new LinkedList<string>(); 我确实使用IEnumerable找到了包含该子字符串的所有专辑:
string albsearch = textBox16.Text;
IEnumerable<string> result = albm1.Where(s => s.Contains(albsearch));但我不知道如何将结果与SortedList的值进行比较。我还尝试创建一个新的SortedList,其中包含字符串形式的专辑:
SortedList<string, string> list2 = new SortedList<string, string>();任何建议都将不胜感激。提前感谢!
发布于 2014-03-31 23:43:32
枚举SortedList时,枚举中的每一项都是键/值对。
我想你想要的是:
Albums alb = new Albums();
SortedList<string, Albums> list1 = new SortedList<string, Albums>();
var foundItems = list1.Where(item => item.Key.Contains(albsearch));或者,如果您想在Album中进行搜索
var foundItems = list1.Where(item => item.Value.albname.Contains(albsearch));当然,如果需要的话,您可以搜索name1字段,而不是专辑名称。
返回的每一项都是一个键/值对。更准确地说,是一个KeyValuePair。
发布于 2014-03-31 23:42:51
[Test]
public void Allbum_Search_Test()
{
var searchText = "TestA";
var list1 = new SortedList<string, Albums>
{
{"TestAlbum1", new Albums("TestAlbum1","SomeDate")},
{"TestAlbum2", new Albums("TestAlbum2","SomeDate")},
{"OtherAlbum2", new Albums("OtherAlbum","SomeDate")}
};
var results = list1.Where(pair => pair.Key.Contains(searchText));
Assert.That(results.Count(), Is.EqualTo(2));
}另外,我强烈建议
将字段private
AlbumName
Albums to Album
ReleaseDate Albname to https://stackoverflow.com/questions/22765723
复制相似问题