我希望从列表中获得正确的价值

时间:2014-09-21 20:55:19

标签: linq list class console

我有一个列表,我在其中为不同的类属性添加了一些值,然后我使用linq查询来排序特定的值。

            List<Artikel> Minlista = new List<Artikel>();

        Minlista.Add(new Artikel { Varonamn = "Mjölk", Pris = 14.90, kategori = new Kategori {Namn = "Mejeri"}, });
        Minlista.Add(new Artikel { Varonamn = "Apelsin", Pris = 7.90, kategori = new Kategori { Namn = "Frukt" } });
        Minlista.Add(new Artikel { Varonamn = "Skinka", Pris = 20, kategori = new Kategori { Namn = "Kött" }, });
        Minlista.Add(new Artikel { Varonamn = "Räkost", Pris = 33, kategori = new Kategori { Namn = "Mejeri" }, });
        Minlista.Add(new Artikel { Varonamn = "Köttfärs", Pris = 45, kategori = new Kategori { Namn = "Kött" }, });

        var specifikvara = from item in Minlista
                    where item.Pris < 34
                    select item;
        foreach (var item in specifikvara)
        {
            Console.WriteLine("{0}", item);
        }

这应该找到一个价格(瑞典语中的Pris),然后小于34.我将4个“值”输入到我的var specifikvara中,然后我将其打印出来。但我想打印出artikel(Varonamn)的名称,但我只在控制台“Consoleapplikation1.Artikel”上收到此消息。如何更改它以便写出“Skinka”或“Räkost”或其中任何一个?

2 个答案:

答案 0 :(得分:1)

您正在选择一堆Artikel类型对象,这就是您获得默认ToString()值的原因。你可以:

1. select item.Varonamn 
2. Console.WriteLine("{0}", item.Varonamn);
3 override ToString in Artikel object

答案 1 :(得分:0)

在您的示例中,循环中的item类型为Artikel。如果需要打印其名称,请打印名称为

的属性
Console.WriteLine("{0}", item.Varonamn);

您也可以引用其他属性:

Console.WriteLine("{0} : {1}", item.Varonamn, item.Pris);