関連 http://qiita.com/7of9/items/50557697949d3ddb30e7
上記のリンクにてDictionary <string, List<string>>()
の検索を実施した。
しかしながら、自分が使いそうなのはDictionary <string, string>()
の検索かもしれない。
実装してみた。
code v0.1
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static string getElementWithLikeSearch(ref Dictionary<string,string>myDic, string searchKey)
{
var list = from name in myDic
where name.Key.Contains(searchKey)
select name;
if (list.Count() == 0) {
return "";
}
foreach(var element in list) {
return element.Value;
}
return "";
}
public static void Main()
{
Dictionary <string, string> myDic = new Dictionary<string, string>();
myDic.Add("HC-SR04", "Ultrasonic sensor...");
myDic.Add("MAX232", "The Max 220-Max249...");
myDic.Add("MAX44242", "The MAX44242 provides...");
string val;
val = getElementWithLikeSearch(ref myDic, "MAX232");
Console.WriteLine(":" + val);
val = getElementWithLikeSearch(ref myDic, "MAX44242");
Console.WriteLine(":" + val);
val = getElementWithLikeSearch(ref myDic, "MAX");
Console.WriteLine(":" + val);
}
}
結果
:The Max 220-Max249...
:The MAX44242 provides...
:The Max 220-Max249...
備考
複数候補が見つかった時に1つ目を返す方法として以下としている。
foreach(var element in list) {
return element.Value;
}
インデックス0のValueを返すようにする方法は未消化なのでforeachを使ってごまかしている。
改善code
@KeisukeKudo さんのコメントを参照ください。