【发布时间】:2021-05-18 22:16:14
【问题描述】:
我有一个组件,其中接受一个泛型类型和一个Func<TItem, string> 来选择一个属性以及一个称为数据的所述类型的列表。要从列表中选择属性非常简单:Data.Select(Property) 我会得到一个所述属性的列表。但是,我现在要做的不是选择列表,而是从数据(如果有的话)中选择单个项目TSelected,其中属性等于我称为tvalue 的某个值。
[Parameter]
public List<TItem> Data { get; set; }
[Parameter]
public Func<TItem, string> Property { get; set; }
[Parameter]
public TItem Selected { get; set; }
...
private string _value;
[Parameter]
public string Value
{
get => _value;
set
{
// if it is equals do nothing
if (string.Equals(_value, value) || value == null)
return;
_value = value;
var selected = Data.Select(Property).FirstOrDefault(x => string.Equals(value, x));
if (!string.IsNullOrEmpty(selected))
{
/* Don't know how to select the property from a single TItem */
Selected = Data.Where( x => x.??? == selected).FirstOrDefault();
}
}
}
【问题讨论】:
-
通常 T 前缀表示类型参数。当您将变量命名为
TSelected和TValue时,会非常混乱。 -
我会解决的