将变量指向可观察集合的特定元素

  • 本文关键字:元素 集合 观察 变量 c#
  • 更新时间 :
  • 英文 :


我想设置一个类型为" ReturnOrderDetailLine"为特定的"ReturnOrderDetailLine"在一个Observable collection中的"ReturnOrderDetailLine">

识别我感兴趣的元素是通过搜索条形码完成的

public ObservableCollection<ReturnOrderDetailLine> ReturnLines
{
get => returnLines;
set
{
returnLines = value;
OnPropertyChanged(nameof(ReturnLines));
}
}
public ReturnOrderDetailLine SelectedLine { get; set; }
protected override void UpdateBarcodePickedOrReturnedQty(string barcodeText)
{
var returnDetailLine = (ReturnOrderDetailLine)ReturnLines.Where(s => s.Barcode.Equals(barcodeText));
SelectedLine = returnDetailLine;
OnPlusCommand();
}

我尝试过使用搜索方法,如。select()或。where(),但似乎这些函数的输出是相同的。

我已经尝试将。where()的结果转换为我想要的类型,但我收到一个"指定的转换无效";错误。

我已经在谷歌上搜索了大约一个小时,但没有得到任何见解。

有人有什么想法吗?

有多种方法可以满足您的需求:

  • FirstOrDefault():返回可能存在多个的第一项(如果不存在则默认)。
  • First():返回可能存在多个的第一项(如果不存在则抛出异常)。
  • SingleOrDefault():假设有一个项目并返回它(如果不存在则默认)。如果有多个项目违反合约,则抛出异常。
  • Single():假设有一个单独的项目并返回它(或者如果不存在则抛出异常)。如果有多个项目违反合约,则抛出异常。

下面是在您的场景中使用FirstOrDefault()方法的示例:

ReturnOrderDetailLine item = ReturnLines.FirstOrDefault(s => s.Barcode.Equals(barcodeText));

更多关于FirstOrDefault(),First(),SingleOrDefault()Single()之间的差异可以在这个有用的stackoverflow答案中找到。