gpt4 book ai didi

c# - 更改列表中包含的类成员的值

转载 作者:太空宇宙 更新时间:2023-11-03 19:20:21 24 4
gpt4 key购买 nike

我有这门课Variables

public class Variables
{

public enum DataType
{
INT, CHAR, BOOL, FLOAT
}

public string Name { get; set; }
public DataType Type { get; set; }
public object Value { get; set; }

public Variables(string name, DataType type, object value)
{
Name = name;
Type = type;
Value = value;
}

}

还假设 Name独一无二的。在另一个类中,我有一个变量列表,List<Variables>

public void Main()
{
List<Variables> varList = new List<Variables>();
varList.Add(new Variables("x",DataType.BOOL, true));
varList.Add(new Variables("y",DataType.BOOL, false));
varList.Add(new Variables("z",DataType.BOOL, true));
varList.Add(new Variables("a",DataType.INT, 1));
varList.Add(new Variables("b",DataType.INT, 10));

// I need this to convert into LiNQ.
foreach (Variables _x in varList)
{
if (_x.Name == "z")
{
_x.Value = false;
}
}
}

如何转换 foreach进入LiNQ ?我试过 .Where , .Select但他们返回IEnumerable .有没有LinQ只返回与给定条件匹配的单个值的方法?例如,

Variables _var = varList.MethodName(LambDa Expression).....

最佳答案

可以使用Single:

varList.Single(x => x.Name == "z").Value = false;

不过,如果除了完全匹配一个之外还有其他任何匹配项,那将失败。

备选方案是 SingleOrDefaultFirstOrDefaultFirstLastOrDefaultLast。例如,如果您期望“0 或 1”结果:

var match = varList.SingleOrDefault(x => x.Name == "z");
if (match != null)
{
match.Value = false;
}

关于c# - 更改列表中包含的类成员的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com