我正在创建一个SelectList,从LINQ查询中填充一个下拉列表。这个是可行的:
// my temp class for including the member count
public class GroupWithCount
{
public string group_name { get; set; }
public int group_id { get; set; }
public int members { get; set; }
}
var groups = from g in DB.Groups
where g.user_id == user_id
let mC = (from c in DB.Contacts where c.group_id == g.group_id select c).Count()
select new GroupWithCount
{
members = mC,
group_id = g.group_id,
group_name = g.group_name
};
model.Groups = new SelectList(groups, "group_id", "group_name");
然而,我希望selectItem文本的格式为“group_name(成员)”,但似乎无法实现。如果我尝试使用,则会出现问题。
select new GroupWithCount
{
members = mCount,
group_id = g.group_id,
group_name = g.group_name + mCount
};
当我尝试时,出现“无法将类型'System.Int32'转换为类型'System.Object'。”
group_name = g.group_name + mCount.ToString()
我遇到了“LINQ to Entities does not recognize the method 'System.String ToString()' method”的问题。如果我尝试这样做:
group_name = string.Format("{0}{1}", g.group_name,mCount)
我收到了 "LINQ to Entities does not recognize the method 'System.String Format(System.String, System.Object, System.Object)' method" 的错误信息。
它似乎不允许我将 Int32 转换为字符串。唯一的选择似乎是创建一个 foreach 方法,遍历 GroupWithCount 对象并创建 SelectListItems 的集合,但这样做太疯狂了。肯定有更好的方法!