我如何确保每个选定的单元格具有相同的值

本文关键字:单元格 何确保 确保 | 更新日期: 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.");
}