Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何在LINQ中编写此查询_Entity Framework_C# 4.0_Linq To Entities - Fatal编程技术网

Entity framework 如何在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

我有一个带有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;
}

谢谢

您可以使用
字符串重写此查询。请加入
以避免在循环中创建多个
字符串
对象,如下所示:

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-我更新了我的答案。不幸的是,我只是在猜测错误。