0

我有一个带有 foreach 循环的 LINQ 查询。一切都很好。但需要更多时间才能获得价值。所以有人建议我如何在 LINQ 查询本身中做到这一点。

代码

NormValue = "";
c = 0;
var NormValuelist = db.BCont.Where(x => x.BId == BId && x.TNo == Tag).ToList();
foreach (var item in NormValuelist)
{
    if (c == 0)
        NormValue = item.NormValue;
    else
        NormValue += " " + item.NormValue;
    c = 1;
}

谢谢

4

3 回答 3

1

您可以重写此查询string.Join以避免string在循环中创建多个对象,如下所示:

string NormValue = string.Join(" ", db.BCont.Where(x => x.BId == BId && x.TNo == Tag));

到 DB 的往返次数将保持不变,但将优化创建List<string>和部分连接的string对象。

于 2013-05-10T13:18:04.820 回答
0

如果您在“NormValuelist”中有大项目,那么最好使用 StringBuilder 而不是 string(NormValue)

于 2013-08-21T13:24:35.373 回答
0

除了使用之外String.Join,您还可以使用Enumerable.Aggregate

var NormValueList = 
    db.BCont.Where(x => x.Bid == BId && x.TNo == Tag)
            .Select(x => x.NormValue)
            .Aggregate((s, x) => s + " " + x);
于 2013-05-10T13:21:51.370 回答