小编kem*_*002的帖子

SQL:选择性子查询

我正在使用SQL查询(MSSQLSERVER),我使用子选择向结果集添加列:

SELECT P.name, 
(select count(*) from cars C where C.type = 'sports') AS sportscars,
(select count(*) from cars C where C.type = 'family') AS familycars,
(select count(*) from cars C where C.type = 'business') AS businesscars
FROM people P
WHERE P.id = 1;
Run Code Online (Sandbox Code Playgroud)

上面的查询只是来自一个有点废话的测试设置,但它的功能足够好我想的例子.我实际上正在处理的查询跨越了许多复杂的表,这些表只会分散手头的问题.

在上面的示例中,表"people"中的每个记录还有三个附加列:"wantsSportscar","wantsFamilycar"和"wantsBusinesscar".现在我想要做的只是如果people表中相应的"want ....."字段设置为"true",则执行每个附加列的子选择.换句话说,如果P.wantsSportscar对于特定的人设置为true,我只想做第一个子选择.第二和第三个子选择应该以类似的方式工作.

因此,此查询应该起作用的方式是它显示特定人员的姓名以及他想要拥有的汽车类型可用的模型数量.值得注意的是,我的最终结果集将始终只包含一个记录,即一个特定用户的记录.

重要的是,如果一个人对某种类型的汽车不感兴趣,那么该类型的列将不包括在最终结果集中.一个例子可以肯定这一点很清楚:

如果A人想要跑车和家用车,结果将包括"名称","跑车"和"家庭车"栏.

如果B人想要商务车,结果将包括"名称"和"商务车"列.

我一直在尝试使用IF,CASE和EXISTS语句的各种组合,但到目前为止,我还没有能够得到语法上正确的解决方案.有谁知道这是否可能?请注意,查询将存储在存储过程中.

sql conditional subquery

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

在VBscript中调用函数时是否有使用Call的优点?

如果答案很明显,请原谅我,因为我编写了vbscript已经很长时间了.

在vbscript中调用函数时是否有使用Call的优点?

例如:

SomeFunction param1, param2
Run Code Online (Sandbox Code Playgroud)

VS

Call SomeFunction (param1, param2)
Run Code Online (Sandbox Code Playgroud)

vbscript

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

静态属性引用非静态方法

静态属性如何引用非静态方法?

例:

public static int UserID
{
  get
  {
     return GetUserID();
  }
}

private int GetUserID()
{
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我得到错误:"非静态字段,方法或属性需要对象引用"GetUserID()"

c# static-methods

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

扩展方法太贵了吗?

如果我添加扩展方法,我的程序性能需要多少钱?
它会工作得更慢还是可能会加载更慢?
谢谢.

.net silverlight silverlight-2.0 silverlight-3.0 silverlight-4.0

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

有什么办法让这个LINQ更快?

我有一个LINQ表达式,正在减慢我的应用程序.我正在绘制一个控件,但为了做到这一点,我需要知道将出现在我的列中的文本的最大宽度.

我这样做的方式是这样的:

return Items.Max(w => TextRenderer.MeasureText((w.RenatlUnit == null)? "" : 
w.RenatlUnit.UnitNumber, this.Font).Width) + 2;
Run Code Online (Sandbox Code Playgroud)

但是,这会迭代大约1000个项目,并占用我绘图方法中使用的CPU时间的大约20%.更糟糕的是,还有两个必须完成的列,因此所有项/列上的LINQ语句占用了大约75-85%的CPU时间.

TextRenderer来自System.Windows.Forms包,因为我没有使用等宽字体,所以需要使用MeasureText来计算字符串的像素宽度.

我怎么能让这更快?

c# linq custom-controls .net-3.5

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

使用C#中的lambdas检查LINQ Sum()方法内的值

我必须将一个对象中的所有值相加.从数据库中检索值并存储在a中List<T>.如果其中一个值等于-1,我想在总和中使用0.

这是我用来执行任务的代码:

lprod_projectionActualvalue = lprod_monthlyReport.Sum(m => new
{
    Monthly_ActualValue = (m.Monthly_ActualValue != -1) ? 
      m.Monthly_ActualValue : 0F
});
Run Code Online (Sandbox Code Playgroud)

Monthly_ActualValuefloat的类型.编译器给我一个错误,说明我无法将匿名类型转换为浮点数?.这很奇怪,因为我在Select子句中使用相同的代码而没有收到任何错误.可能是什么问题呢?

谢谢

弗朗切斯科

c# linq sum

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

DLL中的Singleton类用于多个虚拟目录

我有以下情况:

  • IIS中相同应用程序池下的多个虚拟目录
  • 所有这些目录中相同DLL的副本(相同版本号)
  • 此DLL中的单个类

问题是,这个单例类是仅为所有这些虚拟目录实例创建了一次,还是为每个目录创建了一个单独的单例类.

代码看起来像这样:

    [
Transaction(TransactionOption.Supported),
ClassInterface(ClassInterfaceType.AutoDispatch),
Guid("7DE45C4D-19BE-4AA4-A2DA-F4D86E6502A8")
]
public class SomeClass
{
    private static readonly Singleton singleton = new Singleton();
Run Code Online (Sandbox Code Playgroud)

c# asp.net singleton iis-7

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

验证后刷新asp.net网页

我有一个asp.net网页(C#2008),用户可以在其中输入一个EmployeeID,当它们从文本框中跳出时(页面在代码隐藏中执行验证代码块),他们会得到一个消息框,提示他们选择一个下拉列表框中的两个值.

代码隐藏中的消息提示的代码是:

Response.Write("<script>window.alert('Please select Alpha or Beta')</script>");
Run Code Online (Sandbox Code Playgroud)

显示提示后,用户单击"确定"并返回页面,页面上的文本显示失真(标签中的文本大小更大,标签被包装到另一行等)

我尝试将一个Response.Redirect("UserProfileMaint.aspx");消息框放在代码隐藏中,但是现在,消息框没有出现;

所以这是我的顺序:

  • 用户输入EmployeeID
  • 如果用户未选择Alpha或Beta,则显示messagebox
  • 如果用户已选择Alpha或Beta,则不显示消息框

我想显示消息框验证,并确保页面上文本的外观不会失真.我怎样才能做到这一点?

c# asp.net-3.5

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

授予程序更多访问权限

有没有办法授予My Software对其文件夹的完全访问权限Program Files,当我运行Windows Vista或Windows 7并启用UAC时?

我的应用程序无法在程序文件中写入或删除它的文件!

问候

c#

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

Lambda NULL检查List foreach find方法

如何在具有ForEach和Find方法的lambda表达式中检查NULL值.

例如,我有一个下面的方法,它采用逗号分隔的值列表,迭代它们,并为每个值找到一个SelectListItem,如果找到,则将其标记为Selected.当找不到匹配项并且它抛出空引用异常时,会出现问题.

private static void MarkListItemsSelected(string param, IList<SelectListItem> items)
{
    var filters = param.Split(';');
    filters.ToList()
     .ForEach(x => items.ToList()
                   .Find(y => y.Text.ToUpper().Equals(x.ToUpper()))
                   .Selected = true);
}
Run Code Online (Sandbox Code Playgroud)

c# lambda

0
推荐指数
1
解决办法
1683
查看次数