2010-08-05 48 views
2

我已经写了一个查询来从表中获取结果。如何在<选择列表项目>中插入不同值

var queryres = (from r in objTestEntities.module_where r.PID ==id select r).ToList(); 
try 
{ 
for (int j = 0; j < queryres.Count; j++) 
{ 
string sModuleName = queryres[j].Title; 
int iModuleId = queryres[j].ModuleID; 

string sVersion = queryres[j].VersionNo; 
sModuleNameList.Add(new SelectListItem 
{ 
Text = sModuleName, 
Value = iModuleId.ToString(), 
Selected = true 
}); 



sVersionList.Add(new SelectListItem 
{ 
Text = sVersion, 
Value = sVersion, 
Selected = true 
}); 

} 


ViewData["Module"] = sModuleNameList; 
ViewData["Version"] = sVersionList; 
} 

现在我想要那个类型的sVersionList应该有不同的值。 但是从查询变量我得到模块名称,并且不同的模块可以具有相同的版本。

从上面的版本列表组合中的代码我得到相同的版本没有多次。

但我希望只能看到一个版本。

我也试过这个:ViewData [“Version”] = sVersionList.Distinct(); 但是从这我也无法显示版本列表组合中的区分值。

回答

3
var moduleNameList = queryres.Select(o => new SelectListItem 
{ 
    Text = o.Title, Value = o.ModuleID.ToString(), Selected = true 
}); 
var versionList = queryres 
    .Select(o => o.VersionNo) 
    .Distinct() 
    .Select(o => new SelectListItem 
    { 
     Text = o, Value = o, Selected = true 
    }); 
+1

我觉得有没有的IEqualityComparer的字符串的默认实现......这大约是因为愚蠢的,因为不是的ForEach()上的IEnumerable的实现.. – 2010-08-05 17:15:10

相关问题