|
Hi All,
Yesterday I asked the about the best way to handle strings in C# and got myself into and out of a hole. Today I have the result nicely in a rich Text Box with no spaces/awkward characters now I would like to search the List of data as I'm guessing this is more efficient than going through the text property of the rtb.
<pre lang="c#">
for (int i = 0; i <= NAME.Count - 1; i++)
{
richTextBox2.Text += NAME[i] + "\n";
} //loads the rtb!
bool exists = NAME.Exists(element => element == element);
MessageBox.Show(exists.ToString());</pre>
Vis Studio 2008 moans about comparing to itself ( a = a right?) the example I found was using integers so the line NAME.Exists(element => element > 10) translates as
element is set to equal element if element is greater than 10 so how do I convert this to use strings (my hopeful use of ToString() didn't seem to work!)
Glenn
(update: Hmm Code tags arn't working??)
|
|
|
|
|
bool exists = NAME.Exists(element => element == searchString);
|
|
|
|
|
Okay,
Thanks for that, searchString Vis Studio 2008 can't find. Is it .NET4.0 VS2010 thing or
is part of a using that I am not using or is it a hand rolled thing?
Glenn
|
|
|
|
|
Uh, that would be a variable you create to say what you're searching for.
|
|
|
|
|
|
Aaah LINQ there something...
|
|
|
|
|
I wouldn't search against the content of a GUI Control, I'd rather search some memory-based data structures (a List!) and keep my business code GUI-independent.
PS: watch the "Treat my content as plain text, not as HTML" checkbox.
|
|
|
|
|
Thanks, I am doing that (or trying to!) also I spent a little while trying to figure out
why the code was not appearing correctly,
I now have:
for (int i = 0; i <= DataPitStop.Count - 1; i++)
{
richTextBox2.Text += DataPitStop[i] + "\n";
}
DataPitStop = DataPitStop.Distinct().ToList();
it seems to be working. Can I ask is this the efficient way of sorting data (I'm guessing that they will be using cheap netbooks with some form of Windows).
|
|
|
|
|
Hmm. That code isn't sorting anything, all I see is a chronological concatenation, and the elimination of multiples.
For maximum performance:
- I would NOT concatenate strings, and hence I would not use a TextBox or RichTextBox; I prefer a ListBox, it is a line-oriented control that never needs any implicit concatenation of strings;
- I would not rely on LINQ;
- I would not get a Count property more than once (you get it on every iteration of the loop);
- I would use a foreach, not a for loop;
- I would not work on string data (as in RTB content) unless the data really is text; the actual type (int, DateTime, whatever your data is) is always the preferred one for all operations other than human input/output.
- I would prevent multiples from entering the collection, rather than removing them afterwards;
- when needing a sorted result, I would consider using a collection that sorts all by itself (depends on circumstances, may be faster or slower).
- however I would not worry a bit if Count is below say 100.
|
|
|
|
|
.... The elimination of multiple was really all I was after (RF system gives back data unreliably, varies on the surroundings/antenna position etc.)and cataloging all the devices that can be seen. The sorting will be via third party routine which I just pass strings to. Chronological Concatenation(?) do you mean after a time the values get over written (in part)?, as I was planning to clear the box after 60 reads....
Glenn
|
|
|
|
|
Chronological Concatenation: you concatenate them as they come in, in chronological order, that isn't sorting anything.
|
|
|
|
|
I miss my soldering iron! well at least that explains that.
Glenn
|
|
|
|
|
Beware RoHS!
|
|
|
|
|
Ahh, We do a lot of work for the US, not quite so picky as the EU!
|
|
|
|
|
He's already doing that, NAME is a list or array that he's filling the control from, but he's searching against the in-memory list (NAME) which is correct.
|
|
|
|
|
sorry, my mistake.
|
|
|
|
|
glennPattonWork wrote: i <= NAME.Count - 1
What's wrong with i < NAME.Count ?
|
|
|
|
|
NAME.Count There was a reason I wanted to sort to one below the limit not to the limit.
The reason was I wanted the last entry to be left untouched.
(honestly!)
Glenn
|
|
|
|
|
That doesn't explain the = .
|
|
|
|
|
Well it comes from for() and while() loops you don't need there but a belt and braces approach is not a bad thing to foster in my opion.
|
|
|
|
|
|
I agree in looking at the code, but my fingers type it out of habit now (I always review code before its release on unsuspecting users!)
|
|
|
|
|
I want to replicate my complete database to another database at remote location using C# .NET.How can i do that?? and the main catch is that i have a ID in parent table which should not be replicated in the new table
|
|
|
|
|
|
Yes SQL Server has replication Service but i want to do it on a live project and and i want to do it via C# code using SQl Replication class...
So i need help regarding that
Thanks
|
|
|
|