我如何确保每个选定的单元格具有相同的值
本文关键字:单元格 何确保 确保 | 更新日期: 2023-09-27 18:03:19
我使用的是DevExpress XAF。我有一个列表视图。在列表视图中,用户可以选择多行。我需要确保特定列/属性的所有单元格保持相同的值。否则我需要抛出一个异常。
例如,如果用户选择了3行,我需要确保Trucker列中的3个值相同。下面是我到目前为止的代码:
if (lr.PurchaseLoad.Trucker != null)
{
if (lr.PurchaseLoad.Trucker.Name == lr.PurchaseLoad.Trucker.Name == true)//Is this correct?
{
// What am I comparing here?
}
else if (lr.PurchaseLoad.Trucker.Name.Equals(lr.PurchaseLoad.Trucker.Name) == false)
{
throw new UserFriendlyException("Please make sure your selected records have the same Trucker assigned.");
}
}
尝试这样做,使用LINQ(假设lr
是您的ListView
):
var distinctNames = lr.SelectedItems.Cast<PurchaseLoad.Trucker>()
.Where(x => x != null)
.Select(x => x.Name)
.Distinct()
.Count();
if (distinctNames == 0)
throw new UserFriendlyException("Make at least one selection.");
else if (distinctNames > 1)
throw new UserFriendlyException("Please make sure your selected records have the same Trucker assigned.");
我没有使用DevExpress
控件。看起来您可能需要使用
... = lr.SelectedObjects.Cast<PurchaseLoad.Trucker>()...
在原始代码中,语法是关闭的。使用
比较两个值:if (value1 == value2)
if (value1 != value2)
:
if (value1 == value2 == true)
if (value1 == value2 == false)
最终工作解决方案(来自EB的评论):
foreach (LoadRelationship trucker in View.SelectedObjects)
{
var distinctNames =
View.SelectedObjects.Cast<LoadRelationship>()
.Where(x => x != null)
.Select(x => x.PurchaseLoad.Trucker.Name)
.Distinct()
.Count();
if (distinctNames > 1)
throw new UserFriendlyException(
"Please make sure your assigned Truckers are the same.");
}