2014-01-26 199 views
0

我有我抓住這樣一個資源文件:字典詞典

var rs = <somewhere>.FAQ.ResourceManager 
    .GetResourceSet(CultureInfo.CurrentUICulture, true, true); 

,我想它解析爲詞典的詞典,但我無法弄清楚如何比較。這就是我想:

var ret = rs.OfType<DictionaryEntry>() 
    .Where(x => x.Key.ToString().StartsWith("Title")) 
    .ToDictionary<string, Dictionary<String, string>>(
    k => k.Value.ToString(), 
    v => rs.OfType<DictionaryEntry>() 
     .Where(x => x.Key.ToString().StartsWith(v.Value.ToString().Replace("Title", ""))) 
     .ToDictionary<string, string>(
     key => key.Value, 
     val => val.Value 
    ) 
); 

所以如果我理解這個正確,k應該指的DictionaryEntry,因此我應該能夠取消對它的引用像k.Value和製造我的字典中的每個外部字典的的條目我對資源文件做了另一個查詢,因此keyval也應該是DictionaryEntry類型。

在參考val.Value時出現錯誤「無法從方法組中選擇方法,是否打算調用該方法?」儘管這應該是一種財產,而不是一種方法。

有幫助嗎?

p.s.作爲解釋,我的資源文件看起來有點像這樣:

TitleUser: User Questions 
TitleCust: Customer Questions 
User1: Why does something happen? Because… 
User2: How do I do this? Start by… 
Cust1: Where can I find…? It is located at… 
Cust2: Is there any…? yes, look for it… 

這意味着我第一次得到部分的列表(通過尋找與「標題」開頭的鍵),併爲每個I尋找一個列表的問題

+0

附註:嘗試將代碼拆分爲單獨的語句或更好地分成具有良好名稱的單獨函數......第二天,您將無法讀取單行LINQ。 –

+0

噢,謝謝你對我的帖子的負面評價,無論你是誰。非常有幫助。 – ekkis

回答

1

所以答案證明是編譯器更好地瞭解涉及的類型。把這些說明符排除在外使其工作,儘管爲什麼我的說明符是錯誤的,我還沒有得到。

var ret = rs.OfType<DictionaryEntry>() 
    .Where(x => x.Key.ToString().StartsWith("Title")) 
    .ToDictionary(
    k => k.Value.ToString(), 
    v => rs.OfType<DictionaryEntry>() 
     .Where(x => x.Key.ToString().StartsWith(v.Key.ToString().Replace("Title", ""))) 
     .ToDictionary(
     x => x.Value.ToString().Split('?')[0] + "?", 
     x => x.Value.ToString().Split('?')[1] 
    ) 
); 

(我已經做了一些改變,實際上使它做我想要的事情)。