2013-07-09 121 views
-1

我有一本字典更改列表元素字典

Dictionary<string,int> infoDic 

和列表

List<Info> infoList 

信息对象有2个属性:信息文本和InfoInt

我要检查是否infoList有任何信息对象,其中Info.InfoText等于infoDic.Key ,如果是的话,我想实例化Info.InfoInt到infoDic.Value

编辑

var test= from t in infoList 
     join x in infoDic 
     on t.InfoText equals x.Key 
     select new Info {InfoText =t.InfoText , InfoInt=x.Value } 

任何帮助吗? 泰

+2

请到目前为止显示您的代码,以便我们能够更正它。如果你没有代码,请告诉我们为什么。 –

+0

添加代码..删除投票plz xD –

+1

现在的代码有什么问题? –

回答

1
// IEnumerable<Info> 
var items = infoList.Where(i => infoDic.ContainsKey(i.InfoText)) 
        .Select(e => new Info 
          { 
           InfoInt = infoDic[e.InfoText], 
           InfoText = e.InfoText 
          }); 
1

我要检查是否有infoList任何信息对象,其中Info.InfoText 等于infoDic.Key

可能是这样的:

var ifAny = infoList.Any(info=>infoDic.ContainsKey(info.InfoText); 
0
bool contains = infoList.Any(i => infoDic.ContainsKey(i.InfoText)); 

但因为你的第二个要求:

Info info = infoList.FirstOrDefault(i => infoDic.ContainsKey(i.InfoText)); 
if(info != null) 
{ 
    infoDic[info.InfoText] = info.InfoInt; 
    //or the other way around(it's not that clear) 
    info.InfoInt = infoDic[info.InfoText]; 
} 
+0

downvote的任何理由? –