C#检查是否在列表框中选择了List <enum>项,如果是,则返回true

时间:2018-08-08 21:22:22

标签: c# wpf lambda listbox

我正在尝试验证是否在复选框中选中了属于Enum列表的项。

我正在尝试这样的事情:

if (CrystalsHeldBox2.SelectedItem == Player.CrystalsHeld.Find(item => item == Player.Crystals.Ayanlune))

它是类的一部分,如下:

[JsonProperty("CrystalsHeld")]
public List<Crystals> CrystalsHeld { get; set; }

[JsonProperty("RV")]
public List<string> RV { get; set; }

public Player()
{
    Inventory = new List<Item>();
    CrystalsHeld = new List<Crystals>();
    RV = new List<string>();
}

public enum Crystals : int
{
    Ayanlune = 1
}

基本上我想做这样的事情: 如果Ayanlune Crystal位于显示所有播放器CrystalsHeld的列表框中,则为true。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

我认为您不需要LINQ。一个简单的List<T>.Contains应该可以做到:

    var res= JsonConvert.DeserializeObject<phaxioResponse>(json);
    Console.WriteLine(string.Join(",", res.data));

答案 1 :(得分:0)

CrystalsHeldList,而不是ListBoxListBox是UI控件,而List是C#集合。

您可以检查List是否包含这样的对象:

if (CrystalsHeld.Contains(CrystalsHeldBox2.SelectedItem))
{
    // Do Stuff
}

如果它实际上是ListBox,则该控件具有Items属性,其中包含ListBox中的内容。您可以在类似下面的代码中找到它:

if (CrystalsHeld.Items.Contains(CrystalsHeldBox2.SelectedItem))
{
    // Do Stuff
}

或者,如果您使用的是MVVM,则可以将控件的Items属性绑定到ViewModel中的属性,等等。

答案 2 :(得分:0)

所以!我想到了!我需要做等于:

if (CrystalsHeldBox2.SelectedItem.Equals(Player.Crystals.Ayanlune))
                {
                    AddInline("This is the right object!");
                }