foreach (var item in listItems) { if (selectVal != null && selectVal.Count > 0) { if (selectVal.Contains(item.Value?.ToString())) { item.Selected = true; } else { item.Selected = false; } } } 原来selectVal 没有做判断,如果是items中设置了selected=true,这个地方还是会被覆盖为false