我有一个使用Windows表单绑定到复选框列表的linq查询
var webresourcesFromCRM = from w in orgSvcContext.CreateQuery("webresource")
select new
{
webresourceid = w["webresourceid"],
name = w["name"]
};
绑定时我使用了DisplayMember和ValueMember属性
cblWebResources.DataSource = webresourcesFromCRM;
cblWebResources.DisplayMember = "name";
cblWebResources.ValueMember = "webresourceid";
上面的代码效果很好。但是我的问题是我想获取选中项目的ValueMember。我尝试了cblWebResources.SelectedItems或cblWebResources.SelectedIndices的每种组合。我只希望能够遍历我选择的项目并将每个ValueMember放入Windows窗体应用程序中。
我尝试过其他帖子,例如但不走运,这是Windows窗体应用程序
var selectedItems = checkedUsers.Items.Cast<ListItem>()
.Where(li => li.Selected)
.Select(li => int.Parse(li.Text));
int sum = selectedItems.Sum();
string items = string.Join(",", selectedItems);
最佳答案
CheckedListBox
方便地兼有:
var c = checkedListBox1.CheckedItems;
var s = checkedListBox1.SelectedItems;
现在您得到了交集:
var cs = c.Cast<object>().Where(i => s.Contains(i));
var sc = s.Cast<object>().Where(i => c.Contains(i));
遗憾的是,
CheckedListBoxes
不支持MultiSelect
,因此第二种形式应该更好。可惜的是,它还没有绑定
Checkboxes
的选项:-(