2013-11-21 71 views
-1

有一個查找結構像C#中得到使用字符串中的可行的值,然後在查找搜索,然後用繩子

public class LookupEntry 
{ 
    public string Key { get; set; } 
    public string Value { get; set; } 
} 

//inside main 
var list = new List<LookupEntry>(new LookupEntry[] 
{ 
    new LookupEntry() {Key="A", Value="mo" }, 
    new LookupEntry() {Key="A", Value="nu"}, 
    new LookupEntry() {Key="B", Value="ag"}, 
    new LookupEntry() {Key="B", Value="bi"}, 
    new LookupEntry() {Key="B", Value="cu"}, 
    new LookupEntry() {Key="C", Value="tu"}, 
    new LookupEntry() {Key="D", Value="uo"}, 
    new LookupEntry() {Key="D", Value="vu"}, 
    new LookupEntry() {Key="D", Value="zu"}, 
    new LookupEntry() {Key="E", Value="ve"} 
}); 
string original = "AD"; 
string large = "mobivecuvumonubinuzumozu"; 
//    ABEBDAABADAD would be codified string 

而且使用原來的字符串「AD」限制搜索我想獲得可能的編纂字符串 所以比如我會得到(使用查找)

"mouo" 
    "nuuo" 
    "movu" 
    "nuvu" 
    "mozu" 
    "nuzu" 

AD的字符串

但是,而不是正從查找所有組合我想限制SE拱大串獲得可能的組合 所以在這種情況下,我會得到 「nuzu」 「魔族」

我做這樣的事情

var lookup = list.ToLookup(x => x.Key, x => x.Value); 
var allAs = lookup["A"].ToList(); 
var allDs = lookup["D"].ToList(); 

但我不知道如何繼續,是它一個很好的選擇,以最前一頁搜索所有的可能性,然後刪除不在字符串的那些

+0

IActiveAware ... – terrybozzio

+0

.ok我看到你編輯了,現在,你想限制字符串?...結果的數量說,如果有10個結果需要用某個數字或預定義的數字來限制?...因爲在您的示例中可能會出現5個結果,您需要將結果限制爲例如2哪2個結合 - 前2個?... – terrybozzio

回答

1

你可以嘗試以下的想法:

var query = allAs.SelectMany(x => allDs, (x, y) => x + y).Where(large.Contains); 

這對兩個列表執行笛卡爾連接,並根據結果是否在大字符串中進行過濾。

另外,在LINQ查詢語法,它看起來像這樣:

var query = from x in allAs 
      from y in allDs 
      where large.Contains(x + y) 
      select x + y; 

輸出:

魔族

nuzu

相關問題