我有一个带有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;
}
由于
答案 0 :(得分:1)
您可以使用string.Join
重写此查询,以避免在循环中创建多个string
对象,如下所示:
string NormValue = string.Join(" ", db.BCont.Where(x => x.BId == BId && x.TNo == Tag));
到DB的往返次数将保持不变,但List<string>
和部分连接的string
对象的创建将被优化。
答案 1 :(得分: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);
答案 2 :(得分:0)
如果你在&#34; NormValuelist&#34;那么最好使用StringBuilder而不是string(NormValue)