小编kla*_*har的帖子

为什么SQL Server在指定ORDER BY子句时忽略字符串连接中的vaules

我有下表

Created    Comment
2010/10/10 Text1 
2010/11/11 Text2
2010/12/12 Text3
Run Code Online (Sandbox Code Playgroud)

我需要将所有注释收集到单个字符串中

SELECT  @Comment = COALESCE(@Comment, '')
   + CHAR(13) + CHAR(10) + CONVERT(NVARCHAR(30), [dbo].[Comment].[Created], 101) + ': ' + ISNULL([Comment].[Text], '')
    FROM Comment
Run Code Online (Sandbox Code Playgroud)

没有订购它按预期结束工作返回所有评论.但在运行以下代码后,添加了ORDER BY子句:

SELECT  @Comment = COALESCE(@Comment, '')
   + CHAR(13) + CHAR(10) + CONVERT(NVARCHAR(30), [Created], 101) + ': ' + ISNULL([Text], '')
    FROM Comment
  ORDER BY Created
Run Code Online (Sandbox Code Playgroud)

只返回最后一条评论.有没有人知道为什么ORDER BY导致串联中的奇怪结果?

PS:如果使用FOR XML子句而不是连接,它可以正常工作是否有办法创建SQL Server函数以将子查询中的多行"连接"到单个分隔字段?.

sql sql-server concatenation sql-order-by

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

用其他属性扩展类

我有一个来自外部库的类对象,我想向其中添加一些其他属性。

假设外部类是:

public class ExternalClass
{
    public string EXproperty1 {get;set;}
    public string EXproperty2 {get;set;}
    public string EXproperty3 {get;set;}

    public ExternalClass(){}
}
Run Code Online (Sandbox Code Playgroud)

我有这些对象的列表,这些对象被填充为

List<ExternalClass> listOfExternalClass=new List<ExternalClass>();
listOfExternalClass=GetListOfExternalClass();
Run Code Online (Sandbox Code Playgroud)

我可以通过创建一个新类,添加其他属性并使外部类成为属性来扩展此类。

public class NewClass
{
    public ExternalClass ExternalClass {get;set;}
    public string NewProperty1 {get;set;}
    public string NewProperty2 {get;set;}

    public NewClass(){}
    public NewClass(ExternalClass externalClass){
        this.ExternalClass=externalClass;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是要将外部类的原始列表转换为新类的列表,我将不得不创建新类的新列表,并遍历原始列表以创建新对象并将其添加到列表中,例如

List<NewClass> listOfNewClass=new List<NewClass>();
foreach(var externalClass in listOfExternalClass)
{
    listOfNewClass.Add(new NewClass(externalClass));
}
Run Code Online (Sandbox Code Playgroud)

然后,我将能够访问外部属性,例如

listOfNewClass.FirstOrDefault().ExternalClass.EXproperty1;
Run Code Online (Sandbox Code Playgroud)

我可以继承吗?有没有更有效的方法?

理想情况下,我希望通过调用以下属性来结束:

listOfNewClass.FirstOrDefault().EXproperty1;
Run Code Online (Sandbox Code Playgroud)

c# inheritance

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

ISNULL或OR有更好的表现吗?

我有SQL查询:

SELECT ISNULL(t.column1, t.column2) as [result]
FROM t
Run Code Online (Sandbox Code Playgroud)

我需要通过[result]列过滤掉数据.从下面列出的两个方面来看,有关绩效的最佳方法是什么:

WHERE ISNULL(t.column1, t.column2) = @filterValue
Run Code Online (Sandbox Code Playgroud)

要么:

WHERE t.column1 = @filterValue OR t.column2 = @filterValue
Run Code Online (Sandbox Code Playgroud)

更新:对不起,我忘了提到如果column1被填充,column2始终为null.

sql performance

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

需要从sql查询中获取值

通过ADO,我喜欢做以下查询:

    select name, address, zip from terr where id = '33334'
Run Code Online (Sandbox Code Playgroud)

我喜欢为变量分配名称,地址,zip,以便我稍后可以在我的程序中分配它.我如何使用VB.NET ADO执行此操作?

vb.net ado.net

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

C# 使用 Interop 写入打开的 Excel 文件

我对此感到非常困难,但我需要能够使用 Interop 连接到打开的 excel 文件,然后写入该文件。

该文件由外部进程打开,然后此应用程序稍后进入以写入工作簿。我可以让它打开一个文件并写入活动工作簿。但我找不到连接到以前的工作簿和写作的方法。

我一直在使用,Marshal.GetActiveObject但我很快就会在打开多个文件的计算机上运行该应用程序,并且需要写入一个很可能不是活动文件的文件。

c# excel interop office-interop

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

为什么非参数构造函数仍然可以?

这是接口定义指定它必须使用无参数构造函数来实例化一个新的T类,很好.

public interface IDatabase<T> where T : class, new()
{...}
Run Code Online (Sandbox Code Playgroud)

但具体的课程:

public class MyDatabase<T> : IDatabase<T> where T : class, new()
{
  public MyDatabase(string conString)
  {...}
}
Run Code Online (Sandbox Code Playgroud)

问题

1 - 如果第一个冒号意味着MyDatabase要实现IDatabase接口,为什么还需要第二个冒号再次指定接口的约束?

2 - 内部构造函数public MyDatabase(string conString)是对接口的覆盖,如果是,则不需要第二个冒号,对吧?

c# generics inheritance class

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

Where()的意外结果

我有这个代码,它应该返回一个值类型,在每一步应用指定的转换steps.

private static T Transformed<T>(T x, params Func<T, T>[] steps) where T : struct
{
     if ((steps?.Length ?? 0) == 0)
     {
        return x;
     }

     var reallyEmpty = steps.Where(f => (x = f(x)).Equals(int.MinValue));
     return x;
}
Run Code Online (Sandbox Code Playgroud)

我只需要Where扩展来完成每个步骤而不使用循环,因此我使用的条件可能永远不会是真的(Equals(int.MinValue)).但如果我有这个调用代码,我会得到5而不是15,我期待的.

int res1 = Transformed(5, x => x * 2, x => x + 5);
Console.WriteLine(res1);
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么?不Where通过每个元素并检查它?

c# linq

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

更新c#中的列表

我有一个存储库类,其中包含一个列表,其中包含在我的网站上填写表单的人,如果他们将参加我的聚会.我使用GetAllRespones读取值,并使用AddResponse(通过接口)向列表中添加值

现在我想检查某人是否已填写我的表单,如果是,我想检查WillAttend的值是否已更改并更新它.

我可以在这下面看到我做了什么

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using PartyInvites.Abstract;

namespace PartyInvites.Models
{
public class GuestResponseRepository : IRepository

{
    private static List<GuestResponse> responses = new List<GuestResponse>();

    IEnumerable<GuestResponse> IRepository.GetAllResponses()
    {
        return responses;
    }

    bool IRepository.AddResponse(GuestResponse response)
    {
       bool exists = responses.Any(x => x.Email == response.Email);
        bool existsWillAttend = responses.Any(x => x.WillAttend == response.WillAttend);

        if (exists == true)
        {
            if (existsWillAttend == true)
            {
                return false;
            }

           var attend =  responses.Any(x => x.Email == response.Email && x.WillAttend == response.WillAttend); …
Run Code Online (Sandbox Code Playgroud)

c# linq list

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

如何使用ADO从MS Access数据库中提取表名

我尝试使用此代码:

OleDbConnection c = new OleDbConnection(con);
string SQLS = "SELECT MSysObjects.Name FROM MSysObjects WHERE MSysObjects.Name Not Like 'MsyS*' AND MSysObjects.Type=1 ORDER BY MSysObjects.Name";
OleDbDataAdapter da = new OleDbDataAdapter(SQLS, c);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
Run Code Online (Sandbox Code Playgroud)

但我得到了这个例外:

记录无法读取; 没有'MSysObjects'的读取权限.

现在,我需要将整个ms-access数据库传输到mysql programmaticaly,因此我需要数据库名称.我如何解决这个错误?

c# sql database ado.net

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

asp.net:是sqlConnection ADO吗?

  • 是sqlConnection ADO,如果没有,该层的名称是什么?

  • 要调用ADO,(访问非MS数据库),OleDbConnection是首选吗?

database asp.net ado.net

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

为什么在构造函数中的异步操作中会吞下异常?

我以为我很聪明地找到了一种在ctor中调用aync方法的方法:

public AppStateModel(IBranchClient branchClient)
{
    _branchClient = branchClient;
    var loadBranch = new Action(async () =>
    {
        DataProviderReadResult<BranchDetailViewModel> result = await _branchClient.ReadOneItemAsync(AppSettings.BranchId, _initCts.Token);
    });
    loadBranch();
}
Run Code Online (Sandbox Code Playgroud)

但是动作的主体抛出一个异常,我用普通的方式记录并重新抛出throw;,但是这个ctor执行正常,我的其余代码继续运行,好像什么也没发生.为什么是这样?

c# constructor asynchronous anonymous-function async-await

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

使用c#安装Msi文件

我正在尝试使用 asp.net 应用程序插入 msi 文件。当我在管理员模式下运行 Visual Studio 时它工作正常但是当我在正常模式下运行它时它不起作用。我曾尝试以下代码:

string installerFilePath;
installerFilePath = @"D:\ActivexPractice\test\test\NewFolder1\setup.msi";
System.Diagnostics.Process installerProcess = System.Diagnostics.Process.Start(installerFilePath, "/q");
Run Code Online (Sandbox Code Playgroud)

任何机构都可以指导我如何在没有管理员的情况下安装它

c# asp.net windows-installer

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