我正在研究应该执行简单搜索功能的.NET Windows应用程序.应用程序在SQLServer数据库中按序列号搜索某些卡片,这些序列号在文本文件中导入,我只需在文件上打开StreamReader并开始读取行 - 因为每行只包含一个序列.检索数据后,我将它们全部显示在DataGridView上.
文件中的那些连续出版物不按一定的顺序排列(即我做不到Select * from table where serial between( min and max)); 他们完全没有关系.所以不用多说了,这就是我所做的:
DataTable table = new DataTable()
StreamReader stream= new StreamReader(fileName);
while (!stream.EndOfStream) {
string serial = stream.ReadLine();
SqlDataReader reader= GetCardBySerial(serial);
table.Load(reader);
reader.Close();
}
public SqlDataReader GetCardBySerial(string serialNo) {
SqlConnection cnn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("Cards_GetCardBySerial", cnn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@serialNo", SqlDbType.NVarChar).Value = serialNo;
cnn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但对我来说这很慢.应该做些什么来使搜索更快?
据我所知,ASP.NET MVC利用了ASP.NET Web Forms的许多功能,其中一个服务是如何从模板.aspx文件(视图)中获取Html响应.asp.net mvc可以利用任何其他平台来生成模板文件的html(例如PHP之类的东西)吗?
编辑:这没有用例,只是好奇心!
我注意到最近几周,具有较高经验的程序员不经常讨论"编码"问题,而是讨论设计问题.我真的很想了解这些模式,我知道OO编程和设计的概念,我已经在我的日常工作中应用了相当多的这些原则,我尝试保持我的组件模块化,可重用,并且每个都有一个具体,明确的责任.最近我被建议开始学习各种设计模式(顾问建议的代码完整作为开始),他提到了一些流行模式的名称(如MVC,SingleTon等).那么大师们!我该如何开始学习这些模式?
编辑:
由于详细的解释,我认为我是goona给Saua这一点
这是一个快速的.我有以下代码:
foreach (var item in myRepeater.Items)
{
MyViewModelItem x = new MyViewModelItem();
MapToEntity(x, item);
myList.Add(report);
}
void MapToEntity(object entity, Control control);
Run Code Online (Sandbox Code Playgroud)
我希望这个代码编译没有问题.然而,它没有.
它导致编译时错误,说"MapToEntity"方法有一些无效的参数.编译器无法推断RepeaterItem的类型,它将其识别为普通的System.Object.
为什么会这样?我错过了什么吗?
Ps:我通过删除var关键字并明确定义项目"RepeaterItem"的类型来修复代码.
我在这里做了一些简单的excel自动化,在我的代码周围我有一个切换块,检查CellType(我构建的自定义枚举)并基于它进行一些格式化.
这是我的代码:
switch (celltype)
{
case CellType.String:
cellRangeFormat = cellrange.get_Range(cell, cell);
cellRangeFormat.NumberFormat = ????;
break;
case CellType.Numeric:
cellRangeFormat = cellrange.get_Range(cell, cell);
cellRangeFormat.NumberFormat = ";0_);[Red](0)";
break;
case CellType.Percentage:
cellRangeFormat = cellrange.get_Range(cell, cell);
cellRangeFormat.NumberFormat = "#,0.00 %";
break;
case CellType.Decimal:
cellRangeFormat = cellrange.get_Range(cell, cell);
//cellrangeformat.NumberFormat = "#,0.00";
cellRangeFormat.NumberFormat = "#,##0.00_);[Red](#,##0.00)";
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,在某些列中,值为"000",虽然我将CellType指定为字符串,但excel会格式化值并将单元格显示为空.如果我选择单元格,我会在其中看到值0.我希望excel停止格式化我的值,如果它们是字符串并按原样粘贴它们.
我怎样才能做到这一点?
我有两个SQL Server表作者,以及作者主键(AuthorID)是articles表中的外键以表示authors和articles表之间简单的一对多关系的文章.现在问题是,我需要根据名字,姓氏和传记列在authors表上发出全文搜索.全文搜索工作真棒和排名等等.现在我需要在搜索中添加一个标准,我需要从搜索中忽略所有非文章贡献者.为了实现这一点,我选择创建一个视图,其中所有贡献者都有文章并搜索此视图.所以我用这种方式创建了视图:
Create View vw_Contributors_With_Articles
AS
Select * from Authors
Where Authors.ContributorID
IN ( Select Distinct (Articles.ContributorId) From Articles)
Run Code Online (Sandbox Code Playgroud)
它工作但我真的不喜欢子查询的东西.连接获取了所有冗余的authorID,尝试了不同但不适用于传记列,因为它的类型是ntext.Group by不会为我做,因为我需要所有列而不是它们的任何聚合.
你们觉得怎么样?我怎样才能改善这个?
c# ×3
sql ×2
sql-server ×2
asp.net ×1
asp.net-mvc ×1
com ×1
distinct ×1
excel ×1
oracle ×1
subquery ×1