Why does List<string,bool> not work?

Hello,

I dont wanna use the below code:

I want to use instead: List<string,bool> directly

Is that not possible?
class Article()
{
    string article {get; set;}
    bool isFiltered {get;set}
}
 
var myArticlesList = new List<Article>();

Open in new window

MSFanboyAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
tcullerConnect With a Mentor Commented:
There are countless ways to do this, and from the sounds of your issue, using a Dictionary is definitely not one of them. I may be mistaken, but it sounds like you may have several keys that have the same values. A Dictionary is, well, a dictionary! You need to have a way to differentiate the items within it, but without sacrificing the integrity of its data.

What you have right now is probably pretty close to the best; why not use that? You could make your own class (called an ArticleCollection or something) that inherits directly from List<Article>. I'll give a sample demonstration. Other than that, what you have is pretty much as good as it gets; the List class only has one type parameter, and for good reason.
public class Article
{
     private System.String _article;
     private System.Boolean _filtered;
 
     public System.String Article
     {
          get { return this._article; }
          set { this._article = value; }
     }
 
     public System.Boolean IsFiltered
     {
          get { return this._filtered; }
          set { this._filtered = value; }
     }
}
 
public class ArticleCollection : System.Collections.Generic.List<Article>
{
     // Call base constructors so your class will basically be identical to the List<Article> class
     public ArticleCollection()
          : base() // Unnecessary, but clarity is always good
     {}
     public ArticleCollection(System.Int32 capacity)
          : base(capacity)
     {}
     public ArticleCollection(System.Collections.Generic.IEnumerable<Article> collection)
          : base(collection)
     {}
 
     // Not required, but this is a prime case for iterators. Figured I'd include one for you :)
     public System.Collections.Generic.IEnumerable<System.String> GetTitles()
     {
          foreach(Article art in this)
          {
               yield return art.Article;
          }
     }
     // Add whatever more functionality you need
}

Open in new window

0
 
saraganiCommented:
You can't do a List of String,Bool.
There is no such thing. List is defined as List<T>, not List<X,Y>

If you need a "List" that contains Key and Value (The Key must be Uniqueu) then use Dictionary.

However, Dictionary does not maintain order (Foreach, or for int i = ... to count) does not give the items in the order that they were added to the Dictonary.
0
 
Saari_LexCommented:
What are you actually trying to achieve?
Do you simply want to iterate through a collection? Do you want the collection to maintain the order of the objects? Do you want to be able to sort the collection? Will you be using the collection to populate a data table?

Can a Dictionary help, as suggested by saragani?

..or a ListDictionary? http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary(VS.80).aspx

...or an OrderedDictionary? http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary(VS.80).aspx

...or a SortedDictionary? http://msdn.microsoft.com/en-us/library/f7fta44c(VS.80).aspx
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
MSFanboyAuthor Commented:
I want to write 2 values in sort of a Array to pass to the for loop where I do SQL statements.
I use now Multi-Dimensonal Array string[,] myarray = new string[1000,2];
that fits and I guess its fastest Array compared to any Dictionary.


0
 
HarryNSCommented:
You can probably use this,

Dictionary<string, bool> a = new Dictionary<string, bool>();
            a.Add("Test", true);
            a.Add("Test1", false);
            a.Add("Test2", true);
            a.Add("Test3", false);

            foreach (KeyValuePair<string, bool> item in a)
            {
                MessageBox.Show(item.Key);
                MessageBox.Show(item.Value.ToString());
            }
0
 
HarryNSCommented:
You can probably use this,

Dictionary<string, bool> a = new Dictionary<string, bool>();
            a.Add("Test", true);
            a.Add("Test1", false);
            a.Add("Test2", true);
            a.Add("Test3", false);

            foreach (KeyValuePair<string, bool> item in a)
            {
                MessageBox.Show(item.Key);
                MessageBox.Show(item.Value.ToString());
            }
0
 
MSFanboyAuthor Commented:
I sticked to my Multidimensional Array  (concerning speed) and due to comfortable coding I did a Article class with properties string + bool , sort of overhead but very comfortable...
0
All Courses

From novice to tech pro — start learning today.