小编FMF*_*MFF的帖子

在条件范围内声明隐式类型变量并在外部使用它

在下面的简化代码中,

if(city == "New York City")
{
  var MyObject = from x in MyEFTable
                     where x.CostOfLiving == "VERY HIGH"
                     select x.*;

}
else
{
  var MyObject = from x in MyEFTable
                     where x.CostOfLiving == "MODERATE"
                     select x.*;

}

  foreach (var item in MyObject)
  {
     Console.WriteLine("<item's details>");
  }
Run Code Online (Sandbox Code Playgroud)

在条件块之外无法访问变量MyObject.我怎样才能在if..else之外迭代?

c# foreach var implicit-typing conditional-statements

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

实体框架 - 存储过程结果作为没有主键的实体

如果这个问题已经被问过和回答过,请原谅我。如果是这样,请指点我。我在 .Net 3.5 上使用 VS2010(平台更新不在我的控制范围内)和最新的 Service Pack。

我有一个存储过程,它将返回如下所示的行。没有其他列可以作为该实体的键;结果如下所示:

COUNTRYCODE     QUANTITY
USA             100
UK              250
USA             300
USA             190
Run Code Online (Sandbox Code Playgroud)

等等。

我按照http://blogs.microsoft.co.il/blogs/gilf/archive/2009/03/13/mapping-stored-procedure-results-to-a-custom-entity-in-entity-framework 中的步骤操作.aspx

以及http://msdn.microsoft.com/en-us/library/cc982038(v=VS.90).aspx

这不断导致错误“实体类型 soAndso 没有定义键。为此实体类型定义键

我们如何减轻这个错误?我只是不需要这里的主键,也不能修改存储过程。我要求 SOF 作为最后的手段。请帮忙。非常感谢。

c# linq-to-entities entity-framework ado.net-entity-data-model .net-3.5

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

为什么不能在 Visual Studio 2010 中以本地化模式添加组件?

我刚刚开始创建一个 Windows 服务;出于好奇,选择英语(美国)作为服务的语言,尽管本地化不是现有要求的一部分。

然后,当我尝试将 Timer 组件拖入服务的设计区域时,我收到以下消息:

"Components cannot be added in localization mode. Select (Default) in the Language Property to return to the default form and add components."
Run Code Online (Sandbox Code Playgroud)

我的问题是,本地化与组件有什么关系?

我正在使用 VS2010/C#/.Net 4 和所有最新的服务包。感谢您提供任何答案。

windows-services localization .net-4.0 visual-studio-2010 c#-4.0

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

在存在尾随空格的地方使用SqlFunctions.IsNumeric()?

我有一个简单的LINQ到实体查询,如下所示:

 var BillingNumbers = from o in dbcontext.Orders
                      where SqlFunctions.IsNumeric(o.BillingNumber) == 1
                      select o.BillingNumber;
Run Code Online (Sandbox Code Playgroud)

该查询大部分时间都有效。但是,最近我遇到了这样一种情况,其中BillingNumber确实是数字,但是有一些尾随空格。该查询完全错过了这些值。

如果SqlFunctions.IsNumeric()不能忽略尾随空格,还有哪些选择?

.Net 4 / EF4 / VS2010

linq-to-entities sqlclient c#-4.0

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

LINQ - 将数字存储为字符串

我有以下数据:

PK    OrderNumber      USERDEFFIELD
1     0001             10
2     0001             25
3     0002             20
4     0002             22
5     0002             NULL
6     0003             ABC123
Run Code Online (Sandbox Code Playgroud)

UserDefField列在数据库中是VARCHAR类型.使用LINQ,我如何获得每个订单的SUM(UserDefField)?UserDefField的NULL和非数字值将被视为零.我想要得到的结果:

OrderNumber  TotalQty
0001         35
0002         42
0003          0
Run Code Online (Sandbox Code Playgroud)

如果UserDefField是严格可以为空的数字字段,我知道我会在foreach循环中执行此操作:

 TotalQtyForThisOrder = orders.Sum(w => w.UserDefField ?? 0 );
Run Code Online (Sandbox Code Playgroud)

但是对于字符串字段,应该做什么?非常感谢你的帮助.

c# linq linq-to-entities entity-framework-4

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

T-SQL INSTEAD OF DELETE触发器在没有"挑衅"的情况下触发

我有以下INSTEAD OF DELETE触发器,它会在回滚任何删除尝试时发送电子邮件.

ALTER TRIGGER tr_OnDel_Orders
ON  ORDERS 
INSTEAD OF DELETE
AS 
BEGIN

SET NOCOUNT ON;

declare @b varchar(5000)
Declare @OrderID BIGINT,

SELECT @OrderID  = OrderID
FROM deleted d

set @b = 'Someone attempted to delete the following order:' + CHAR(10);
set @b = @b + ' OrderID: ' + cast(@OrderID as varchar(30)) + CHAR(10);
set @b = @b + ' UserID: ' +  SYSTEM_USER

RAISERROR('Cannot delete order', 16, 1)
ROLLBACK TRAN

EXEC msdb.dbo.sp_send_dbmail @recipients = 'myemail@mycompany.com',
                         @body = @b, …
Run Code Online (Sandbox Code Playgroud)

t-sql triggers sql-server-2008

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

使用LINQ-to-Entities查询中的"应用程序设置"中指定的StringCollection

在我的应用程序中,我有属性设置,其类型为String.Collections.Specialized.StringCollection.它包含一系列客户代码,例如MSFT,SOF,IBM等.我正在尝试在where子句中的Linq-to-Entities查询中使用它:

var ShippedOrders = dbcontext.Orders
 .Where(s=>(s.Status.Description.Equals("Shipped") && !Properties.Settings.Default.CustomersToExclude.Contains(s.CustomerCode)));
Run Code Online (Sandbox Code Playgroud)

这失败,因为Linq-to-Entities无法识别包含类似于以下消息的包含:

"LINQ-to-Entities无法识别方法包含......"

如何修改上面的代码以避免此错误?

c# settings linq-to-entities stringcollection c#-4.0

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

带有通配符字符串数组的 PowerShell Get-ChildItem

我有一个文件夹,其中包含多个数据库的一堆 SQL Server .BAK 文件。.BAK 文件名每天都在变化。

其中,我只对 3-4 个数据库的最新BAK 文件感兴趣Restore-SqlDatabase

这是我到目前为止所拥有的:

$databases = @('Orders', 'Items', 'Returns')
$BackupPath  = '\\BACKUPSERVER\BackupData\'
$latestBackupFile = Get-ChildItem $BackupPath -Attributes !Directory *$databases[0]* | Sort-Object -Descending -Property LastWriteTime | Select-Object -First 1
$latestBackupFile
#Restore-SqlDatabase -ServerInstance "my-vm" -Database "Orders" -BackupFile "\\BACKUPSERVER\BackupData\AODA2.Orders.2024-01-15.22-23-13.BAK" -ReplaceDatabase
#Restore-SqlDatabase -ServerInstance "my-vm" -Database "Items" -BackupFile "\\BACKUPSERVER\BackupData\MMMWW.Items.2024-01-15.22-23-13.BAK" -ReplaceDatabase
Run Code Online (Sandbox Code Playgroud)

Restore-SqlDatabase命令单独执行时有效;我已将上下文包含在上述脚本中。

*$databases[0]**Orders*- 这不会产生像我希望的那样的通配符字符串。

我不确定如何制作 ForEach 循环:a) 循环遍历数组$databases以获取通配符字符串,如*Orders**Items**Returns*;b) 循环遍历每个通配符的最新 .BAK 文件以构造命令Restore-SqlDatabase。 …

powershell wildcard

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

字符串或二进制数据将被截断

消息8152,级别16,状态14,行60字符串或二进制数据将被截断.

我想插入临时表.这个程序一直在通过测试,直到昨天.我得到截断错误,修复了一个字段,它开始工作.今天我运行它,我再次得到截断错误.我尝试将插入中的所有字段设置为等于max和8000但无效.是否对临时表有某种数据限制限制.我对输入的所有最大长度进行了评估,并且所有这些都在表格构造的限制范围内.

Temp Table非常大,但在我看来是必要的.

sql sql-server temp-tables

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

将存储过程中使用的逻辑传递给调用C#应用程序

我有一个从C#应用程序调用的存储过程.该存储过程具有两个互斥的代码路径; 它们都返回相似类型的记录,如下所示:

IF x=y
  SELECT colX, colY
  FROM TableA
ELSE
  SELECT colX,colY
  FROM TableA
  WHERE colX > 100
Run Code Online (Sandbox Code Playgroud)

手头的任务涉及在文本文件中写入sp调用的结果; 文件名取决于执行两个SELECT中的哪一个.名称将是MyTextFile.txt或MyTextFileGT100.txt

如何告诉C#app执行了哪两个SELECT语句?

c# t-sql stored-procedures

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

批处理文件 - 即使发生故障,REN命令的ErrorLevel也会返回0

这与我之前的问题有关.

ren "C:\Temp\%%A" "%%A"
if errorlevel 0 (
          "C:\Program Files\7-Zip\cmdline\7za.exe" a -tzip -mx9 "C:\temp\Zip\%%A.zip" "C:\temp\%%A"
           Move "C:\temp\%%A" "C:\Temp\Archive"
                )
Run Code Online (Sandbox Code Playgroud)

在上面,即使REN命令失败,IF总是评估为true.

我们的想法是检查文件是否未被任何其他应用程序锁定,如果没有,则将其归档并将其移动到其他位置.

怎么做到最好?

谢谢.

command-line rename batch-file

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