我有下表
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函数以将子查询中的多行"连接"到单个分隔字段?.
我有一个来自外部库的类对象,我想向其中添加一些其他属性。
假设外部类是:
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) 我有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.
通过ADO,我喜欢做以下查询:
select name, address, zip from terr where id = '33334'
Run Code Online (Sandbox Code Playgroud)
我喜欢为变量分配名称,地址,zip,以便我稍后可以在我的程序中分配它.我如何使用VB.NET ADO执行此操作?
我对此感到非常困难,但我需要能够使用 Interop 连接到打开的 excel 文件,然后写入该文件。
该文件由外部进程打开,然后此应用程序稍后进入以写入工作簿。我可以让它打开一个文件并写入活动工作簿。但我找不到连接到以前的工作簿和写作的方法。
我一直在使用,Marshal.GetActiveObject但我很快就会在打开多个文件的计算机上运行该应用程序,并且需要写入一个很可能不是活动文件的文件。
这是接口定义指定它必须使用无参数构造函数来实例化一个新的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)是对接口的覆盖,如果是,则不需要第二个冒号,对吧?
我有这个代码,它应该返回一个值类型,在每一步应用指定的转换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通过每个元素并检查它?
我有一个存储库类,其中包含一个列表,其中包含在我的网站上填写表单的人,如果他们将参加我的聚会.我使用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) 我尝试使用此代码:
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,因此我需要数据库名称.我如何解决这个错误?
是sqlConnection ADO,如果没有,该层的名称是什么?
要调用ADO,(访问非MS数据库),OleDbConnection是首选吗?
我以为我很聪明地找到了一种在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执行正常,我的其余代码继续运行,好像什么也没发生.为什么是这样?
我正在尝试使用 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# ×8
ado.net ×3
sql ×3
asp.net ×2
database ×2
inheritance ×2
linq ×2
async-await ×1
asynchronous ×1
class ×1
constructor ×1
excel ×1
generics ×1
interop ×1
list ×1
performance ×1
sql-order-by ×1
sql-server ×1
vb.net ×1