检索自定义字符串值

时间:2015-05-25 05:43:32

标签: c#

目标:
检索代码myListAnimals的字符串值“1_2_3”。将来,价值可以是随机的。 我需要在数字之间添加一个“_”。

问题:
我不知道如何使用LINQ做到这一点?

public class Animal
{
    private void int _number;
    private void string _name;
    private bool display;


    public int Number
    {
        get { return _number;}
            set { _number = value; }
        }

    public int Name
    {
        get { return _name;
            set { _name = value; }
        }

    public bool Display
    {
        get { return display;
            set { display = value; }
        }

}


List<Animal> myListAnimal = new List<Animal>

Animal myAnimal = new List<Animal>
myAnimal.Number = 1;
myAnimal.Name = "Dog";
myAnimal.Display = True;

myAnimals.add(myAnimal )


Animal myAnimal2 = new List<Animal>
myAnimal2.Number = 2;
myAnimal2.Name = "Cat";
myAnimal2.Display = True;

myAnimals.add(myAnimal2)


Animal myAnimal3 = new List<Animal>
myAnimal3.Number = 3;
myAnimal3.Name = "Pig";
myAnimal3.Display = True;  

myAnimals.add(myAnimal3)

Animal myAnimal4 = new List<Animal>
myAnimal4.Number = 4;
myAnimal4.Name = "Sheep";
myAnimal4.Display = false;      

myAnimals.add(myAnimal4)

3 个答案:

答案 0 :(得分:1)

注意:您的代码示例不是有效的C#。我假设您可以解决这个问题(需要进行非常简单的基本更改)。那说:

是的,您可以使用LINQ来连接字符串,这最终是您正在做的事情。

var concat = myListAnimal
    .Where(a => a.Display)
    .Select(a => a.Number.ToString())
    .Aggregate((current, next) => current + "_" + next);

Console.WriteLine(concat);

将与您的数据一起输出:

1_2_3
  • Where()过滤Display != true
  • 的值
  • Select()将数字值投影到字符串序列
  • Aggregate()进行连接。

答案 1 :(得分:0)

尝试使用StringBuilderForEach扩展方法。

StringBuilder sb = new StringBuilder(); 
myAnimals.ForEach(x=> sb.AppendFormat("{0}_",x.Number));

答案 2 :(得分:0)

您的代码无效。首先解决它并尝试这个。

var concat =string.Join("_", myListAnimal.Select(a => a.Number).ToArray());