Entity framework 如何在LINQ中编写此查询
我有一个带有foreach循环的LINQ查询。一切都很好。但获得价值需要更多的时间。所以有人建议我如何在LINQ查询本身中做到这一点 代码Entity framework 如何在LINQ中编写此查询,entity-framework,c#-4.0,linq-to-entities,Entity Framework,C# 4.0,Linq To Entities,我有一个带有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) Norm
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;
}
谢谢您可以使用
字符串重写此查询。请加入以避免在循环中创建多个字符串
对象,如下所示:
string NormValue = string.Join(" ", db.BCont.Where(x => x.BId == BId && x.TNo == Tag));
到DB的往返次数将保持不变,但列表
和部分连接的字符串
对象的创建将得到优化。除了使用字符串.Join
,还可以使用枚举.聚合
:
var NormValueList =
db.BCont.Where(x => x.Bid == BId && x.TNo == Tag)
.Select(x => x.NormValue)
.Aggregate((s, x) => s + " " + x);
如果在“NormValuelist”中有较大的项,那么最好使用StringBuilder而不是string(NormValue)如何在模型中使用它。。我正试着这样使用。。BTags=Db.BibContents。其中(x=>x.bibibid==q.bibibid&&x.TagNo==“245”)。聚合((s,x)=>s+“”+x.NormValue)。。但显示出错误。Btags是一个字符串类型的模型属性。@UniqueChar-我更新了我的答案。不幸的是,我只是在猜测错误。