首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较SortedList字符串和IEnumerable字符串,字符串

比较SortedList字符串和IEnumerable字符串,字符串
EN

Stack Overflow用户
提问于 2014-03-31 23:29:09
回答 2查看 409关注 0票数 0

我遇到了一个我无法解决的问题。:-)我必须找到所有包含某个子字符串的值,然后我必须取回键和值对。我必须实现一个系统,在这个系统中我必须制作一个SortedList,其中的相册是一个类,字符串当然是关键字

代码语言:javascript
复制
Albums alb = new Albums();
SortedList<string, Albums> list1 = new SortedList<string, Albums>();

Albums类如下所示:

代码语言:javascript
复制
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里:

代码语言:javascript
复制
LinkedList<string> albm1 = new LinkedList<string>();  

我确实使用IEnumerable找到了包含该子字符串的所有专辑:

代码语言:javascript
复制
string albsearch = textBox16.Text;
IEnumerable<string> result = albm1.Where(s => s.Contains(albsearch));

但我不知道如何将结果与SortedList的值进行比较。我还尝试创建一个新的SortedList,其中包含字符串形式的专辑:

代码语言:javascript
复制
SortedList<string, string> list2 = new SortedList<string, string>();

任何建议都将不胜感激。提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2014-03-31 23:43:32

枚举SortedList时,枚举中的每一项都是键/值对。

我想你想要的是:

代码语言:javascript
复制
Albums alb = new Albums();
SortedList<string, Albums> list1 = new SortedList<string, Albums>();

var foundItems = list1.Where(item => item.Key.Contains(albsearch));

或者,如果您想在Album中进行搜索

代码语言:javascript
复制
var foundItems = list1.Where(item => item.Value.albname.Contains(albsearch));

当然,如果需要的话,您可以搜索name1字段,而不是专辑名称。

返回的每一项都是一个键/值对。更准确地说,是一个KeyValuePair

票数 1
EN

Stack Overflow用户

发布于 2014-03-31 23:42:51

代码语言:javascript
复制
    [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

  • renaming

  • 改为AlbumName

Albums to Album

  • 将类型更改为ReleaseDate Albname to
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22765723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档