<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Suche mit indexof]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese eine Datenbank aus und speichere mir bestimmte Werte in einer &quot;List&quot; um im Programm schneller darauf zugreifen zu können und nicht ständig die Datenbank zu bemühen.<br />
Wie kann ich in der komplexen List &quot;writedatapoints&quot; nach z.B. mpi == 24 suchen, damit der Index zurückgegeben wird um danach mit dem Index auf andere Werte z.B. writedatapoints[index].setpoint zuzugreifen.<br />
Eventuell gibt es etwas besseres als &quot;indexof&quot; .... ??</p>
<pre><code>public class WRITEdatapoint 
	{
		public string  karname        { get; set; }
		public int     usbnr          { get; set; }
		public string  setpoint       { get; set; }
	}
		
	public static List&lt;WRITEdatapoint&gt; writedatapoints = new List&lt;WRITEdatapoint&gt;();	
</code></pre>
<p>Danke !!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/355381/suche-mit-indexof</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 12:50:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/355381.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Oct 2025 17:59:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Suche mit indexof on Fri, 31 Oct 2025 17:59:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese eine Datenbank aus und speichere mir bestimmte Werte in einer &quot;List&quot; um im Programm schneller darauf zugreifen zu können und nicht ständig die Datenbank zu bemühen.<br />
Wie kann ich in der komplexen List &quot;writedatapoints&quot; nach z.B. mpi == 24 suchen, damit der Index zurückgegeben wird um danach mit dem Index auf andere Werte z.B. writedatapoints[index].setpoint zuzugreifen.<br />
Eventuell gibt es etwas besseres als &quot;indexof&quot; .... ??</p>
<pre><code>public class WRITEdatapoint 
	{
		public string  karname        { get; set; }
		public int     usbnr          { get; set; }
		public string  setpoint       { get; set; }
	}
		
	public static List&lt;WRITEdatapoint&gt; writedatapoints = new List&lt;WRITEdatapoint&gt;();	
</code></pre>
<p>Danke !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624307</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Fri, 31 Oct 2025 17:59:10 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Fri, 31 Oct 2025 21:14:59 GMT]]></title><description><![CDATA[<p>In einer List hast du nicht wirklich eine andere Möglichkeit. Aber wenn du mit einer List vor hast, diese so anzusprechen, dann deutet das darauf hin, dass du keine List möchtest. Listen sind gut, um ein Element nach dem anderen durchzugehen, nicht um gezielt zwischen verschiedenen Elementen hin- und her zu springen (Zumindest nicht, wenn du sie erst suchen musste. Wenn du den Index schon kennst, ist eine List toll zum Anspringen). Vielleicht willst du eine sortierte List? Damit kann man ein gesuchtes Element einfacher finden. Oder, ganz anders gedacht, suchst du ein Dictionary? Eventuell auch ein HashSet, je nachdem, was du genau vor hast. Jedenfalls solltest du nochmal nachdenken, wie du deine Daten für deinen Anwendungszweck am besten organisierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624308</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 31 Oct 2025 21:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sat, 01 Nov 2025 06:18:12 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a> sagte in <a href="/forum/post/2624308">Suche mit indexof</a>:</p>
<blockquote>
<p>HashSet</p>
</blockquote>
<p>Guten Morgen,</p>
<p>hier bin ich noch zu neu in C# um das beurteilen zu können, was besser ist/wäre.</p>
<p><strong>Hier die Problemstellung:</strong></p>
<p>In der Datenbank gibt es records mit jeweils einem eindeutigen primarykey &quot;karname&quot;<br />
Die Datenbank wird in meinem Programm ausgelesen und die &quot;records&quot; sollen im Programm so abgespeichert werden, das ich diese leicht durchsuchen und auslesen kann.<br />
Somit geht der Zugriff schneller als immer über die Datenbank.<br />
Je nach Anforderung werden die Daten manipuliert und sporadisch in die Datenbank zurück geschrieben.</p>
<p>Um einen record zu finden wird immer nach dem eindeutigen &quot;karname&quot; gesucht.</p>
<p>Was wäre für diesen Anwendungsfall die beste, schnellste (Zugriff) aber auch &quot;einfach&quot; zu programmierende Lösung  ?</p>
<p>PS: Die Datenbank/Record wird im Laufe der Zeit noch erweitert, aktuell 3 Felder, später sicher 20 Felder pro record.</p>
<p>Vielen Dank !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624309</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Sat, 01 Nov 2025 06:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sat, 01 Nov 2025 07:33:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375"><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a></a> sagte in <a href="/forum/post/2624308">Suche mit indexof</a>:</p>
<blockquote>
<p>In einer List hast du nicht wirklich eine andere Möglichkeit. Aber wenn du mit einer List vor hast, diese so anzusprechen, dann deutet das darauf hin, dass du keine List möchtest. Listen sind gut, um ein Element nach dem anderen durchzugehen, nicht um gezielt zwischen verschiedenen Elementen hin- und her zu springen</p>
</blockquote>
<p>Eine .NET <a href="https://learn.microsoft.com/de-de/dotnet/api/system.collections.generic.list-1" rel="nofollow">List&lt;T&gt;</a> entspricht einem dynamischen Array (also wie in C++ ein <code>std::vector&lt;T&gt;</code>, keine Linked-List), einzelne Elemente können also gezielt per Index angesprochen werden.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/351">@worst_case</a>: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375"><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a></a> hat recht, mit einem <a href="https://learn.microsoft.com/de-de/dotnet/api/system.collections.generic.dictionary-2" rel="nofollow">Dictionary&lt;Key, Value&gt;</a> kannst du dann direkt ein Element über den <code>Key</code> ansprechen (am besten mit <a href="https://learn.microsoft.com/de-de/dotnet/api/system.collections.generic.dictionary-2.trygetvalue" rel="nofollow">TryGetValue(...)</a>).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624310</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sat, 01 Nov 2025 07:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sat, 01 Nov 2025 09:15:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18594">@Th69</a> Ich sitze gerade auf der Leitung, wie würde/müsste dann die Deklaration von meinem Beispiel aussehen, wenn der Aufbau der Daten gleich bleiben würde ?</p>
<pre><code class="language-cpp">public class WRITEdatapoint 
	{
		public string  karname        { get; set; }
		public int     usbnr                { get; set; }
		public string  setpoint        { get; set; }
	}
</code></pre>
<p>so in der Art:</p>
<p>Dictionary&lt;string, WRITEdatapoint&gt; pcereturns = new Dictionary&lt;string, WRITEdatapoint&gt;();</p>
<p>und der key wäre dann auch der karname ... ??? das verstehe ich nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624311</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Sat, 01 Nov 2025 09:15:30 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sat, 01 Nov 2025 10:58:09 GMT]]></title><description><![CDATA[<p>Ja, genau so.</p>
<p>Und sollen die Eigenschaften eines <code>WRITEdatapoint</code> nach dem Erzeugen noch änderbar sein? Wenn nicht bzw. zumindestens der <code>karname</code> sollte es nicht sein (denn dann müßtest du ja auch diesen im <code>Dictionary</code> ändern), dann solltest du ein <a href="https://learn.microsoft.com/de-de/dotnet/csharp/language-reference/builtin-types/record" rel="nofollow">record</a> (auf deutsch Datensatz genannt) verwenden:</p>
<pre><code class="language-csharp">public record WRITEdatapoint(string karname, int usbnr, string setpoint);
</code></pre>
<p>oder alternativ wenigstens</p>
<pre><code>public string karname { get; init; } // init bedeutet, daß es initialisiert werden muß, aber nachträglich nicht mehr verändert werden kann
</code></pre>
<p>verwenden.</p>
<p>PS: Eigenschaften in C# sollten genauso wie Methoden mit einem Großbuchstaben anfangen, also <code>KarName</code> (oder <code>KARname</code> - ich weiß leider nicht was <code>kar</code> bedeutet ;- ), <code>USBNr</code>, <code>SetPoint</code>, ...).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624312</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sat, 01 Nov 2025 10:58:09 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 07:26:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>jetzt habe ich ein kleines Problem mit dem dictionary<br />
Ich lese das dictionary in der foreach Schleife komplett aus.<br />
Hier &quot;Rückagebwert&quot;  der Schleife ist die Variable record mit der Struktur.<br />
In der Schleife kann ich beliebig die Struktur nutzen. z.B. record.Value.Db passt.</p>
<pre><code class="language-cpp">foreach (KeyValuePair&lt;string,PELdatapoint&gt; record in peldatapoints)
			{
         	                ....    record.Value.Db, 
			        ....    record.Value.Offset,
			            
                                    readformat(record),
																	 1
																	);
</code></pre>
<p>Wenn ich nun den &quot;record&quot; an eine Unterfunktion übergeben will, wie stelle ich das an ?</p>
<p>z.B.    readformat(record)</p>
<pre><code class="language-cpp">readmemtype(PELdatapoint record1)
</code></pre>
<p>Das funktioniert nicht ... sitze gerade auf der Leitung</p>
<p>Vielen Dank !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624313</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Sun, 02 Nov 2025 07:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 07:55:35 GMT]]></title><description><![CDATA[<p>Außer, daß du hier 2 verschiedene Namen (<code>readformat</code>, <code>readmemtype</code>) der Methode geschrieben hast, sollte es so richtig sein.</p>
<p>Ansonsten poste den Code der Methode sowie mindestens die genaue Fehlermeldung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624314</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 02 Nov 2025 07:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 08:10:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es sind zwei Methoden ( readmemtype und readformat), die den selben Übergabeparameter (ein record des dictionary)  bekommen sollen.<br />
Anbei ein Teil der einen Methode</p>
<pre><code class="language-cpp">	static eDataType readmemtype(PELdatapoint record1)
		{
			switch (record1.Format.ToLower())
			{
				case &quot;D&quot; : return eDataType.BYTE; break;
				case &quot;byte&quot; : return eDataType.BYTE; break;

		
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2624316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624316</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Sun, 02 Nov 2025 08:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 08:20:57 GMT]]></title><description><![CDATA[<p>Und was ist jetzt der genaue Fehler???</p>
<p>PS: Nach einem <code>return</code> in einer <code>case</code>-Anweisung braucht man kein <code>break</code> mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624317</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 02 Nov 2025 08:20:57 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 08:28:24 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/351">@worst_case</a> sagte in <a href="/forum/post/2624313">Suche mit indexof</a>:</p>
<blockquote>
<p>foreach (KeyValuePair&lt;string,PELdatapoint&gt; record in peldatapoints)<br />
{<br />
....    record.Value.Db,<br />
....    record.Value.Offset,</p>
<pre><code>                                readformat(record),
</code></pre>
</blockquote>
<p>Die Fehlermeldung beim Aufruf &quot;readformat(record)&quot; in meiner IDE</p>
<p>Argument type 'System.Collections.Generic.KeyValuePair&lt;string,ConnectSql.sqlProgramm.PELdatapoint&gt;' is not assignable to parameter type 'ConnectSql.sqlProgramm.PELdatapoint'</p>
<p>??? keine Ahnung warum ????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624318</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Sun, 02 Nov 2025 08:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 09:12:27 GMT]]></title><description><![CDATA[<p>Du mußt die Datentypen beachten:</p>
<pre><code class="language-csharp">KeyValuePair&lt;string,PELdatapoint&gt; record
</code></pre>
<p>Hier ist <code>record</code> ein <code>KeyValuePair&lt;...&gt;</code>.<br />
Und zum Zugriff auf den <code>PELdatapoint</code> benutzt du ja <code>record.Value</code> -&gt; also müßtest du auch diesen bei der Methode angeben.</p>
<p>Daher solltest du besser den Variablennamen ändern:</p>
<pre><code class="language-csharp">foreach (KeyValuePair&lt;string,PELdatapoint&gt; pair in peldatapoints) // oder 'var pair' verwenden
{
     PELdatapoint record = pair.Value;

     var format = readformat(record);
}
</code></pre>
<p>Oder wenn du nur die Werte haben willst (und nicht den Key), dann kannst du auch direkt</p>
<pre><code class="language-csharp">foreach (PELdatapoint record in peldatapoints.Values)
</code></pre>
<p>verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624319</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 02 Nov 2025 09:12:27 GMT</pubDate></item><item><title><![CDATA[Reply to Suche mit indexof on Sun, 02 Nov 2025 09:42:56 GMT]]></title><description><![CDATA[<p>.. super,</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2624320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2624320</guid><dc:creator><![CDATA[worst_case]]></dc:creator><pubDate>Sun, 02 Nov 2025 09:42:56 GMT</pubDate></item></channel></rss>