小编San*_*Rai的帖子

我想知道在迭代数据读取器对象时,'yield'的连接状态和对代码性能的影响

这是我用来从数据库中获取数据的示例代码:在DAO层:

public IEnumerable<IDataRecord> GetDATA(ICommonSearchCriteriaDto commonSearchCriteriaDto)
{
    using(DbContext)
    {
        DbDataReader reader = DbContext.GetReader("ABC_PACKAGE.GET_DATA", oracleParams.ToArray(), CommandType.StoredProcedure);
        while (reader.Read())
        {
            yield return reader;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在BO层我调用上面的方法,如:

List<IGridDataDto> GridDataDtos = MapMultiple(_costDriversGraphDao.GetGraphData(commonSearchCriteriaDto)).ToList();
Run Code Online (Sandbox Code Playgroud)

在mapper层上MapMultiple方法的定义如下:

public IGridDataDto MapSingle(IDataRecord dataRecord)
{
    return new GridDataDto
    {
        Code = Convert.ToString(dataRecord["Code"]),
        Name = Convert.ToString(dataRecord["Name"]),
        Type = Convert.ToString(dataRecord["Type"])     
    };
}
public IEnumerable<IGridDataDto> MapMultiple(IEnumerable<IDataRecord> dataRecords)
{
    return dataRecords.Select(MapSingle);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码运行良好,但我想知道上述代码的两个问题.

  1. 数据阅读器的连接将打开多长时间?
  2. 当我只考虑代码性能因素时,使用'yield return'而不​​是将记录添加到列表并返回整个列表是一个好主意吗?

c# linq using datareader yield-return

16
推荐指数
1
解决办法
2万
查看次数

为什么在任何成员变量(即调用函数/ Property)之前允许'@'不影响其值?

我知道'@'关键字在C#中用于不同的目的,如这里所讨论的,但我的问题是不同的.

假设我用来@ConfigurationManager.AppSetting["DbConnectionString"]代替ConfigurationManager.AppSetting["DbConnectionString"].它仍然以相同的方式工作.

所以我的问题是:

  1. 为什么编译器在不影响其值的情况下允许使用'@'符号?
  2. 如上所述,'@'符号可以改变任何场景中的值吗?

为了更清楚,我想再添加一个示例:

假设,我有一个'ConfigurationLoader'具有静态函数的类'GetConfigurations'返回一个字符串列表.

然后,我可以称之为List<string> ConnectionStrs=ConfigurationLoader.GetConfigurations();.

如果我这样做List<string> ConnectionStrs=@ConfigurationLoader.GetConfigurations();它仍然会给出相同的结果.在这样的场景中,我问上面两个问题.

c# asp.net

10
推荐指数
2
解决办法
644
查看次数

使用javascript分配会话值

有没有办法使用javascript分配会话值

我可以从会话中检索值但分配不起作用

var TempSession = '<%= Convert.ToInt32(Session["Status"]) %>';
if(TempSession ==6)
{
   alert(TempSession );
   TempSession =1;
}
Run Code Online (Sandbox Code Playgroud)

javascript asp.net

3
推荐指数
1
解决办法
1万
查看次数

单词 join 处或附近的语法错误

我使用以下 Select 语句来检索和计算多个表中每个字段的总数。但是,当执行该语句时,我收到错误“单词 join 处或附近的语法错误”

任何帮助将不胜感激

询问:

Select CompanyStatus,Companyname,
        INNER JOIN Company on usersincompany.companyID=company.companyID,
                INNER JOIN company on users.companyID=Company.companyID,
                 INNER JOIN usersincompany on users.userid=usersincompany.userid,
                INNER JOIN users on userstatus.userstatudid=users.userstatusid,
                INNER JOIN users on project.companyid=users.companyid,
                INNER JOIN users on usersession.userid=users.userid,
                INNER JOIN project on template.projectid=project.projectid,
                INNER JOIN project on merchendisingarea.projectid=project.projectid,
                 INNER JOIN merchendisingarea on publishstatus.publishstatusid=merchendisingarea.publishstatusid,
             INNER JOIN template on merchendisingmodule.templateid=template.templateid,
        INNER JOIN company on companyaccountclassification.classificationtypeid=company.classificationtypeid,
sum(distinct users.userid) as TotalUsers,
sum(case when users.userstatusid =2 then 1 else 0 end) as Activeusers,
sum(case …
Run Code Online (Sandbox Code Playgroud)

sql

2
推荐指数
1
解决办法
2万
查看次数

Response.End()抛出一个错误

在我的应用程序中,我需要下载一个文件,所以我使用这段代码:

 Response.ContentType = "application/octet-stream";                    
 Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
 Response.TransmitFile(strFilePath);
 Response.End();
Run Code Online (Sandbox Code Playgroud)

Response.End()我收到一个错误ThreadAbortException

为了避免这个错误,我试图使用httpApplication.CompleteRequest(),但我也无法使用它.

httpApplication.CompleteRequest()的代码如下,

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
Response.TransmitFile(strFilePath);
HttpApplication.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)

我在使用HttpApplication.CompleteRequest()时遇到此错误

An object reference is required for the non-static field, method, or property 'System.Web.HttpApplication.CompleteRequest()'
Run Code Online (Sandbox Code Playgroud)

我希望我能够清楚地表达我的怀疑......帮助我......

asp.net

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net ×3

c# ×2

datareader ×1

javascript ×1

linq ×1

sql ×1

using ×1

yield-return ×1