【发布时间】:2011-11-17 14:46:27
【问题描述】:
我正在创建一个 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 (members)”,但我似乎不能这样做。如果我尝试
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 无法识别 'System.String ToString()' 方法”。如果我尝试
group_name = string.Format("{0}{1}", g.group_name,mCount)
我收到“LINQ to Entities 无法识别方法 'System.String Format(System.String, System.Object, System.Object)' 方法”。
它只是不允许我将 Int32 转换为字符串。似乎唯一的选择是创建一个遍历 GroupWithCount 对象并创建 SelectListItems 集合的 foreach 方法,但这太疯狂了。肯定有更好的办法!
【问题讨论】:
标签: c# linq linq-to-entities