在下面的简化代码中,
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之外迭代?
如果这个问题已经被问过和回答过,请原谅我。如果是这样,请指点我。我在 .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
我刚刚开始创建一个 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
我有一个简单的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
我有以下数据:
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)
但是对于字符串字段,应该做什么?非常感谢你的帮助.
我有以下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) 在我的应用程序中,我有属性设置,其类型为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无法识别方法包含......"
如何修改上面的代码以避免此错误?
我有一个文件夹,其中包含多个数据库的一堆 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。 …
消息8152,级别16,状态14,行60字符串或二进制数据将被截断.
我想插入临时表.这个程序一直在通过测试,直到昨天.我得到截断错误,修复了一个字段,它开始工作.今天我运行它,我再次得到截断错误.我尝试将插入中的所有字段设置为等于max和8000但无效.是否对临时表有某种数据限制限制.我对输入的所有最大长度进行了评估,并且所有这些都在表格构造的限制范围内.
Temp Table非常大,但在我看来是必要的.
我有一个从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语句?
这与我之前的问题有关.
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.
我们的想法是检查文件是否未被任何其他应用程序锁定,如果没有,则将其归档并将其移动到其他位置.
怎么做到最好?
谢谢.
c# ×5
c#-4.0 ×3
t-sql ×2
.net-3.5 ×1
.net-4.0 ×1
batch-file ×1
command-line ×1
foreach ×1
linq ×1
localization ×1
powershell ×1
rename ×1
settings ×1
sql ×1
sql-server ×1
sqlclient ×1
temp-tables ×1
triggers ×1
var ×1
wildcard ×1