如何将字段合并到一个属性中

3
我有一些属性列表,例如:
public string name {get;set;}
public string lastname {get;set;}
public string age {get;set;}
public string fullName {get;set;}

现在我想将前三个属性连接到最后一个'FullName'属性中。
这意味着如果我有name = John, Lastname = smith, age = 20
那么
Fullname should be John Smith 20

我该如何做呢?我应该在Domain Class中使用setter属性来完成,还是可以使用Linq来完成?

我有超过1000条记录,它们都被带入了IEnumerable。我该如何做呢?我想避免循环这些记录。


不清楚最后两段讲的是什么。LINQ 在这里有什么关系,或者"循环记录"是什么意思?如果你想显示多条记录,显然必须在某处进行循环(可能是隐式的)- 但这似乎与属性连接完全无关。 - Jon Skeet
你已经定义了一个属性,只需使用getter进行定义,并将其标记为未映射,然后返回name + " " + LastName + " " + age - Nilesh
4个回答

11

我会将其设置为只读属性 - 除非你想在设置时开始将值解析成位。所以:

public string FullName
{
    // This is assuming you've also fixed the property names to be conventional
    // I'd also suggest changing "Name" to "GivenName" or "FirstName".
    get { return string.Format("{0} {1} {2}", Name, LastName, Age); }
}

如果你真的想要一个setter,我建议通过空格拆分输入,然后设置其他三个属性中的每一个。不要为FullName属性(独立字段)单独存储,否则数据可能会变得不一致。


1

由于问题已经得到回答,因此不直接回答问题,但您可能会发现这很有用。

您还可以在类内部覆盖ToString方法。

public override string ToString()
{
     return string.Format("{0} {1} {2}", Name, LastName, Age);
}

其中一个好处是在调试期间,当您检查IEnumerable时,您可以一目了然地看到底层数据,而无需钻入每个单独的项目。


0
public string FullName
{
    get 
    { 
        return name + " " + lastname + " " + age.ToString();
    }
}

或者

public string FullName
{
    get 
    { 
        return string.Format("{0} {1} {2}", name, lastname, age);
    }
}

0
只使用getter方法定义属性:
public string FullName
{
    get
    {
        return String.Format("{0} {1} {2}", this.Name, this.LastName, this.Age);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接