检索2个值并通过一次调用插入到字符串中

时间:2012-01-17 21:15:58

标签: linq entity-framework

我创建了以下函数来获取FirstName和LastName并将它们放入字符串FullName。

我的linq语句看起来有点滑稽,因为我在同一行上进行2次查询以获取我需要的信息。

有更好的编码方法吗?

public static string getMemberFullNamebyID(int memID)
{
    using (var ctx = new GPEntities())
    {
        string fname = string.Empty;
        string lname = string.Empty;

        fname = ctx.Members.Where(g => g.memID == memID).Select(g => g.memFirstName).FirstOrDefault();
        lname = ctx.Members.Where(g => g.memID == memID).Select(g => g.memLastName).FirstOrDefault();

        return (lname + ", " + lname).ToString();
    }
}

2 个答案:

答案 0 :(得分:4)

怎么样:

ctx.Members.Where(g => g.memID == memID)
    .Select(g => g.memFirstName + ", " + g.memLastName).FirstOrDefault()

答案 1 :(得分:1)

如果需要单独存储值,请使用匿名类型,例如:

var ret = ctx.Members.Where(g => g.memID == memID)
    .Select(g => new { First = g.memFirstName, Last = g.memLastName}).FirstOrDefault();

访问匿名类型:

List<string> list = new List<string>();
list.Add("WoLfulus");
list.Add("David");

var sel = list.Select(i => new { 
    Normal = i, 
    Lower = i.ToLower(), 
    Upper = i.ToUpper() 
});

访问返回的数据:

foreach (var str in sel)
{
    Debug.WriteLine(str.Normal + ", " + str.Lower + ", " + str.Upper);
}

输出:

WoLfulus, wolfulus, WOLFULUS
David, david, DAVID

如果没有,请使用AdaTheDev所说的内容。