我正在重构一些代码,我编写了一个修改Dictionary并返回它的方法.这比使用out参数更好吗?我真的不想在这种情况下创建一个扩展方法,因为它会将方法添加到Dictionary类中,这对于它的用途来说是过度的.请不要指出我不应该使用动态sql,这是目前必须推迟的重构中的另一个阶段.
private static Dictionary<int, string>
FindMatches(Dictionary<int, string> records,
string queryFormat,
string region,
string type,
string label)
{
var query = string.Format(queryFormat, SqlSvrName, SqlDbName, SqlSchemaName,
region, type, label);
using (var dr = DataRepository.Provider.ExecuteReader(CommandType.Text, query))
{
if (dr != null && !dr.IsClosed)
{
while (dr.Read())
{
var assetID = (int)dr.GetDouble(0);
if (!records.ContainsKey(assetID))
records[assetID] = dr.GetString(1);
}
}
}
return records;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我是有点仓促与我一词的使用了上面.我试图在我的代码中明确表示该方法修改了字典.这里的out参数只有在方法创建了一个新字典并通过该参数返回时才有意义.为此更多的上下文是使用不同的查询字符串多次调用该方法,并且字典可能已经包含匹配.
编辑2:只是为了跟进我删除了记录参数,而是从FindMatches返回KeyValuePair列表.我最终通过以下方式转换为字典:List<KeyValuePair<int, string>>
records
.GroupBy(rec => …Run Code Online (Sandbox Code Playgroud) 我已经将MVC3 Web应用程序添加到包含普通旧html文件的现有网站.当你请求一个特定的文件时这很好用但是我没想到的是通过更改站点使用.Net 4它不再注意到IIS中的默认文档设置(在这种情况下是IIS 6).例如,我可以请求www.something.com/index.html,但如果我要求www.something.com,我会收到资源未找到错误页面.Global.asax中是否有MapRoute我可以指定将站点路由URL映射到index.html?
目前我正在使用devexpress开发一个应用程序,我设置了两个列来隐藏,如下所示:
gridView1.Columns[2].Visible = false;
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的程序时,DataGrid中有一个名为"Selector de Columnas"的选项(英文ColumnChooser).在此选项中,将显示我设置为隐藏的两列.我不希望用户看到这些列,但我仍然需要它们,所以我只想隐藏它们.

我搜索了Devexpress的在线文档,他们在这里说明可以使用ShowInColumnChooser属性隐藏列.但是我无法在ColumnChooser中隐藏这些列.他们没有向您展示任何示例,只是这行代码:
public bool ShowInColumnChooser { get; set; }
Run Code Online (Sandbox Code Playgroud)
我猜这是一些Devexpress控件的属性,但是他们没有说明如何使用它.
c# devexpress visual-studio-2010 visual-c#-express-2010 devexpress-windows-ui
我创建了一个 .net 标准类库服务,用于在我的新 Maui 应用程序中访问 sqlite 数据库。我的问题是在哪里调用初始化代码。我添加了 DI 注册,其中MauiProgram.cs将 my 注册DbService为接口的实现IDbService:
builder
.Services
.AddSingleton<IDbService>(serviceProvider =>
ActivatorUtilities.CreateInstance<DbService>(serviceProvider, databasePath))
.AddSingleton<MainViewModel>()
.AddSingleton<MainPage>();
Run Code Online (Sandbox Code Playgroud)
初始化数据库的代码(创建表、加载测试数据)我目前已放入主页视图模型的构造函数中,该视图模型注册为单例,因此初始化只会发生一次。但显然在构造函数中调用异步初始化代码是错误的。正确的位置在哪里?
Task.Run(async () =>
{
await _dbService.Initialise();
if (!(await _dbService.GetExperiences(1, 0)).Any())
await _dbService.LoadTestData();
await GetData();
}).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud) 我正在使用.asmx Web服务从Windows Mobile应用程序上载SQL Server CE压缩数据库文件.我将数据库分成1MiB块,重新组装服务器上的数据库.一旦服务器处理完数据库,就会使用移动应用程序驱动的类似过程将其传输回设备.这种方法效果很好,但有些用户的ADSL连接只允许~700Kb的上传速度.我想优化块大小,以确保这些用户可以获得最佳的上传体验.ADSL是否有最佳的块大小?
我开始使用C#,我创建了一个方法,从文本流向数组添加值并返回数组,如下所示:
private static string[] getLines(StreamReader myStream)
{
string[] lines;
while (!myStream.EndOfStream)
{
lines = new string[] { myStream.ReadLine() };
}
return lines;
}
Run Code Online (Sandbox Code Playgroud)
我在return参数中使用了未赋值的变量'lines'.
我有一个简单的代码,当我将行更改my.Test<int>();
为时my.Test<string>();,它可以工作,但对于 int 不起作用。
class Program
{
class MyClass
{
public void Test<T>()
where T : class // Generic Constraint
{
Console.WriteLine("Hello"); // Prints Hello
}
}
static void Main()
{
MyClass my = new MyClass();
my.Test<int>();
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud) c# ×6
.net-core ×1
arrays ×1
asmx ×1
asp.net ×1
coding-style ×1
devexpress ×1
maui ×1
methods ×1
sqlite-net ×1
web-services ×1