对我来说,提出一些精心设计的SQL集处理代码来解决各种领域模型问题是第二天性.但是,趋势是不再触摸SQL. 是否有一些模式引用或转换工具可以帮助将各种SQL模式转换为Linq语法?
我会查找代码如下代码的方法:(这有一个子查询):
SELECT * FROM orders X WHERE
(SELECT COUNT(*) FROM orders Y
WHERE Y.totalOrder > X.totalOrder) < 6
Run Code Online (Sandbox Code Playgroud)
(以副作用获得前五名最高订单总数)
或者,您如何知道Linq在不使用调试器的情况下作为单个语句执行? 我知道你需要遵循枚举,但我会假设只是在某处查找模式.
这是来自MSDN站点,这是他们做SQL差异的例子.我可能错了,但我不认为这会在服务器上使用set处理(我认为它会在本地拉出两个集合然后取得差异,这将是非常低效的).我可能错了,这可能是该引用的模式之一.
SQL差异示例:
var differenceQuery =
(from cust in db.Customers
select cust.Country)
.Except
(from emp in db.Employees
select emp.Country);
Run Code Online (Sandbox Code Playgroud)
谢谢
- 微软在C#中的101 Linq示例是一种在模式中构建linq以生成所需SQL的更接近的方法.我会发现更多的帖子.我真的在寻找一种方法(模式或转换工具)来将SQL转换为Linq.
SELECT DISTINCT [t0].[field] AS [Field_Name]
FROM [left_table] AS [t0]
WHERE NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [right_table] AS [t1]
WHERE [t0].[field] = [t1].[field]
))
Run Code Online (Sandbox Code Playgroud)
这就是我们想要的,而不是我的预期.所以,这是记忆的一种模式.
假设我知道更新主键是坏的.
还有其他问题暗示inserted和updated记录表的位置匹配(第一个匹配另一个匹配.)这是事实还是巧合?
当主键在更新时发生更改时,是否有任何可以将两个表连接在一起的内容?
这个问题很长,因为我在很长一段时间内一直在更新问题,试图让SSIS正确导出Excel数据. 我设法解决了这个问题,虽然不正确.除了提供正确答案的人之外,这个问题中列出的解决方案并不可怕.
我发现的唯一答案是为我的列创建一个名为range的单行.在命名范围内放入样本数据并隐藏它. SSIS附加数据并从单行读取元数据(足够接近它以丢弃其中的内容). 数据采用隐藏单行的格式. 这允许标题等.
哇屁股有多痛.这将需要450天的出口来收回损失的时间.但是,我仍然喜欢SSIS并将继续使用它,因为它仍然比Filemaker LOL更好.我的下一次尝试将在报表服务器中执行相同的操作.
原始问题说明:
如果您在Sql Server集成服务设计器中并且想要从第一行以外的其他内容开始将数据导出到Excel文件,那么让我们说第四行,您如何指定?
我尝试进入数据流的Excel目标,将变量中的AccessMode更改为OpenRowSet,然后将变量设置为"YPlatters $ A4:I20000"这无法说它无法找到工作表.该表称为YPlatters.
我以为你可以指定(Sheet $)(起始单元格):(结束单元格)?
更新
显然,在Excel中,您可以选择一组单元格,并使用名称框命名它们.这允许您选择名称而不是没有$ dollar符号的工作表.奇怪的是,无论您指定的范围如何,它都会将数据附加到范围之后的下一行.奇怪的是,当您添加数据时,它会增加命名选择的行数.
另一个奇怪的事情是数据采用指定范围的最后一行的格式.我的标题行是粗体.如果我指定以标题行结尾的范围,则数据会附加到下面的行,并使所有条目变为粗体.如果指定较低的一行,则在标题行和数据之间放置一个空行,但数据不是粗体.
另一个更新
无论我尝试什么,SSIS都会对文件的"第一行"进行采样,并根据找到的内容设置元数据.但是,如果样本数据的值为零但格式为第一行,则会将该列视为文本,并在前面插入带有单引号的数值('123.34).我还尝试了不反映列数据类型的标头.我尝试更改Excel目标的元数据,但它总是在我运行项目时将其更改回来,然后无法说它会截断数据.如果我告诉它忽略错误,它会导入除该列之外的所有内容.
一段时间后的几天几个小时......
另一个更新
我试过每一个组合.一个主要的工作示例是从列标题开始创建命名范围.格式化列标题,因为您希望数据看起来像数据采用此格式.在我的例子中,这些是从A4到E4,这是我定义的范围.SSIS附加到定义范围之后的行,因此定义A4到E68将从A69开始追加行.您将Connection定义为第一行包含字段名称.它采用标题行的元数据,奇怪的是,而不是第二行,它猜测数据类型,而不是列的格式化数据类型,即标题是文本,所以我的所有元数据都是文本.如果标题是粗体,那么所有数据都是粗体.
我甚至试图制作样本数据行但没有成功......我认为没有人真正使用Excel和默认的MS SSIS导出.
如果您可以定义没有标题行的"插入范围"(A5到E5)并格式化这些列(货币,而不是粗体等)而不在Excel中跳过一行,这将非常有用.根据我的收集,没有第三方连接管理器,没有人使用SSIS导出Excel.
有关如何正确设置以便正确格式化数据的任何想法,即从Excel读取的元数据适用于实际数据,格式是否继承自第一行数据,而不是Excel中的标题?
最后一次更新(2009年7月17日)
我让这个工作得很好.我添加到Excel的一件事是Excel连接字符串中的IMEX = 1:"Excel 8.0; HDR =是; IMEX = 1".这迫使Excel(我认为)查看所有行以查看其中包含哪种数据.一般来说,这不会丢弃信息,例如,如果您有一个邮政编码然后大约9行,你有一个zip + 4,Excel没有这个空白完全没有错误.在IMEX = 1的情况下,它识别出Zip实际上是一个字符字段而不是数字字段.
当然还有一个更新(2009年8月27日)
IMEX = 1将成功导入前8行中缺少内容的数据,但是在没有数据的情况下导出数据将失败.因此,将它放在导入连接字符串上,而不是导出Excel连接字符串.
我不得不说,经过这么多摆弄之后,它的效果非常好.
PS如果您使用的是x64位版本,请确保从C:\ Program Files\Microsoft SQL Server\90\DTS.x86\Binn调用DTExec.它将加载32位Excel驱动程序并正常工作.
PRINT CONVERT(NUMERIC(18,0), '')
产生 Error converting data type varchar to numeric.
然而,
PRINT CONVERT(INT, '')
产生 0没有错误......
问题:是否有一些SQL Server标志或我是否需要为每个varchar到数字转换执行case语句?(除了明显的原因?)
我们将XML代码存储在单个关系数据库字段中以解决实体/属性/值数据库问题,但是我不希望这会破坏我的域建模,DTO和存储库的阳光.我无法绕过EAV/CR内容,但我可以选择如何存储它.问题是我将如何使用它?
如何在C#中的运行时将XML元数据转换为类/对象?
例如:
XML将描述我们的食谱配方具有各种属性,但通常相似,并且有一个或多个关于制作食物的属性.食物本身可以是任何东西,并有任何类型的疯狂准备.搜索所有属性并且可以链接到现有营养信息.
// <-- [Model validation annotation goes here for MVC2]
public class Pizza {
public string kind {get; set;}
public string shape {get; set;}
public string city {get; set;}
...
}
Run Code Online (Sandbox Code Playgroud)
并在ActionMethod中:
makePizzaActionMethod (Pizza myPizza) {
if (myPizza.isValid() ) { // this is probably ModelState.isValid()...
myRecipeRepository.Save( myPizza);
return View("Saved");
}
else
return View();
}
Run Code Online (Sandbox Code Playgroud) 通常,我这样做:
var a = from p in db.Products
where p.ProductType == "Tee Shirt"
group p by p.ProductColor into g
select new Category {
PropertyType = g.Key,
Count = g.Count() }
Run Code Online (Sandbox Code Playgroud)
但我有这样的代码:
var a = Products
.Where("ProductType == @0", "Tee Shirt")
.GroupBy("ProductColor", "it")
.Select("new ( Key, it.Count() as int )");
Run Code Online (Sandbox Code Playgroud)
我可以改变什么语法来产生相同的结果,即如何从第二个Linq语句中对Category进行投影?
我知道在这两者摹和它是一样的,代表整个表的记录,那我拉整条记录中只是做一个计数.我也需要解决这个问题. 编辑:Marcelo Cantos指出Linq非常聪明,不会提取不必要的数据.谢谢!
我有一个众所周知的POCO类客户从我的方法返回.但是,我只填充由不断变化的Expression p => new {p.id,p.name}指定的属性,作为方法的参数.
不知何故,我需要复制这两个对象之间的所有匹配字段.
var returnObject = IList<Customer>();
var partialFieldObject = DC.Customers.Select( expParameter); // wont know the fields
foreach( var partialRecord in partialFieldObject)
{ foreach (var property in partialRecord // Pseudo code)
{
returnObject[property] = property.value; // More Pseudo code
}
}
End result is a strongly typed Customer POCO returned that only has the selected fields populated with values.
Run Code Online (Sandbox Code Playgroud) 希望以下代码是使用ASP.NET MVC 3返回磁盘上存在的映像的正确方法:
public FilePathResult GetThumbnail(string imageName)
{
if( !String.IsNullOrEmpty(imageName) &&
Regex.IsMatch(imageName, @"^p\d{10}.jpg$"))) ) // p0000000000.jpg
{
var homePath = Server.MapPath("~/Content/previews");
var imagePath = Path.Combine( homePath, imageName );
if( System.IO.File.Exists(imagePath) )
return this.File(imagePath, "image/jpeg");
}
return ???
}
Run Code Online (Sandbox Code Playgroud)
如果您没有找到该文件,您可以返回哪些代表HTML 404错误(或等效的?)
我想创造一些divs表示我可以移动和调整,并结合他们的width,height在一个阵列等的对象.所以,如果我创建6个的div,我有我的阵列六个对象,其每一个对象.width,.height等等.
我不太明白如何使用knockout.js将输入和span文本绑定到数组对象属性.这是我的尝试:
var counter = 0;
var objects = [];
$(document).ready(function () {
dostuff($("#main")); // give it a target container div
});
function dostuff(target) {
counter++;
// create a div containing a span and an input that binds to knockout.js
target.append('<div id="d' + counter + '">width:<span id="d' + counter +
'" data-bind="text:objects[' + counter + '].width"></span>' +
'<input type="text" id="d' + counter +
'" data-bind="value:objects[' + counter + '].width"/></div>');
var …Run Code Online (Sandbox Code Playgroud) 我知道你可以这样做:
$(".myClass").resizable().draggable();
Run Code Online (Sandbox Code Playgroud)
但你怎么data-bind=""用来做同样的事呢?
c# ×5
sql ×3
jquery ×2
jquery-ui ×2
knockout.js ×2
linq ×2
dynamic ×1
dynamicquery ×1
excel ×1
export ×1
fileresult ×1
javascript ×1
object ×1
openrowset ×1
reflection ×1
sql-server ×1
ssis ×1
t-sql ×1
triggers ×1