小编lep*_*pie的帖子

C#SqlDataReader行/列没有数据

我已经离开了一段时间的编程,但最近我需要它.

我使用Sql Server Compact Edition 4.0(VS2012内置)的SQL DataReader有问题.

string connstring = "Data Source=C:\\..(Path Here)..\\VacationsDB.sdf";
SqlCeConnection conn = new SqlCeConnection(connstring);
string strSQL = "SELECT * FROM Vacation WHERE VacationNo = @val";

using (SqlCeCommand cmd = new SqlCeCommand(strSQL, conn))
{
    //read search value from from text field
    cmd.Parameters.AddWithValue("@val", vacationno_txt.Text);
    conn.Open();

    SqlCeDataReader reader = cmd.ExecuteReader();
    fname_txt.Text = reader.GetString(0);
    mname_txt.Text = reader.GetString(1);
    /*
     * .. snip
     */
    vacationno_txt.Text = reader.GetString(11);
    conn.Close();
}
Run Code Online (Sandbox Code Playgroud)

我一直收到错误:"InvalidOperationException未处理.行/列没有数据." 并且错误指向fname_txt.Text = reader.GetString(0);

但实际上有数据,因为带有所有代码的"提交"按钮正在工作,我已经在数据库表中检查了它.

有小费吗?谢谢.

c# asp.net sqldatareader

3
推荐指数
2
解决办法
6378
查看次数

如何最好地穿越儿童的孩子到一个未知的深度?

想象一下具有以下属性的对象:

        class TestObject
        {
            public string Name { get; set; }
            public Collection<TestObject> Children { get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

现在以锯齿状方式初始化一些:

var person1 = new TestObject(){ 
                          Name = "Joe", 
                          Children = new Collection<TestObject>(){ childCollection1 }; 
                              };

var person2 = new TestObject(){ 
                          Name = "Mary", 
                          Children = new Collection<TestObject>(){ childCollection2 }; 
                              };
Run Code Online (Sandbox Code Playgroud)

乔的孩子收藏只有一层深,但玛丽的孩子有孩子,他们也有孩子.

我试图使用SelectMany没有运气.

// Works
var joe = person1.Children.SelectMany(c => c.Children).Concat(person1.Children);

// Does not work - only returns 1 level deep
var mary = person2.Children.SelectMany(c => c.Children).Concat(person2.Children);
Run Code Online (Sandbox Code Playgroud)

检索包含每个孩子的结果到未知深度的最佳方法是什么?

c# linq

3
推荐指数
2
解决办法
857
查看次数

使用c#检查gridview是否为空

目前我有以下内容:

if (dataGridView1.Rows.Count == 0)
{
    MessageBox.Show("EMPTY");
}
else
{
    using (var soundPlayer = new SoundPlayer(@"c:\Windows\Media\chimes.wav"))
    {
        soundPlayer.Play(); // can also use soundPlayer.PlaySync()
    }
}
Run Code Online (Sandbox Code Playgroud)

我的网格视图如下所示:

在此输入图像描述

但它似乎转到了else语句并发出声音.如果gridview的行中没有数据,我需要它才能发出声音.

.net c# gridview winforms

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

在 C++ 中返回不完整类型的副本

我刚刚发现这段代码在 VS 2010 的头文件中(至少)是合法的

class AClass; //forward declaration of AClass (incomplete type);
class UseAClass
{
   public: 
      AClass returnAClass(); //return a copy of incomplete type - AClass ???
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释我为什么要写这个吗?

c++ visual-c++

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

c#if else语句不区分大小写

我有这个if else语句,用于将文本框中的结果与上下文列表进行比较.我想知道如何使它不区分大小写?

value = textbox1.Text;

if (article.contains(value))
{   
    label = qwerty;

}
else
{

     break;
{
Run Code Online (Sandbox Code Playgroud)

c# case-sensitive

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

如何在SQL#中将lambda表达式作为参数传递

我是初学者使用lambda表达式.

我有一个经销商名单,foreach经销商我必须计算等级.

要求是将等级计算分成单独的方法.

所以我正在编写以下两种方法,但是我无法将参数传递给CalculateGrade()方法,

public IEnumerable<Dealers> GetDealerGrades(IEnumerable<Dealers> gradeData)
{
    return gradeData
        .GroupBy(row => new { row.Name })
        .Select(g => new Dealers
        {
            Name = g.Key.Name,
            TotalPoints = CalculateGrade(x => Convert.ToDouble(x.RecievedPoints),
                                         y => y.MaxPoints,
                                         z => Convert.ToDouble(z.Weightage)) 
        })
        .ToList();
}

private double CalculateGrade(double d1, int d2, double d3)
{
    return ( d1 / d2 ) 
        * d3 == 0.00 ? 1
        : d3;
}
Run Code Online (Sandbox Code Playgroud)

有人可以建议如何传递参数,或者如何传递lamda表达式并计算等级?

提前谢谢了...

c# linq

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

从 C# 中的字符串中删除特殊字符列表

我需要将带有特定特殊字符列表的字符串替换为 string.Empty。

示例:123 ~Main 到 123 Main

特殊字符列表:+ - && || !( ) { } [ ] ^ " ~ * ? : \

我知道我们可以在下面这样做,我们可以有更好的方法,使用一些正则表达式。

> keyword = keyword.Replace("+", string.Empty);
>         keyword = keyword.Replace("&&", string.Empty);
>         keyword = keyword.Replace("||", string.Empty);
>         keyword = keyword.Replace("!", string.Empty);
>         keyword = keyword.Replace("(", string.Empty);
>         keyword = keyword.Replace(")", string.Empty);
>         keyword = keyword.Replace("{", string.Empty);
>         keyword = keyword.Replace("}", string.Empty);
>         keyword = keyword.Replace("[", string.Empty);
>         keyword = keyword.Replace("]", string.Empty);
>         keyword = keyword.Replace("^", string.Empty); …
Run Code Online (Sandbox Code Playgroud)

c# regex

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

向RACSubscriber发送错误需要返回吗?

return [RACSignal create:^(id <RACSubscriber> subscriber) {
    if (someError) {
        [subscriber sendError:documentCreationError];
        return;
    }

    [subscriber sendNext:nil];
    [subscriber sendCompleted];
}];
Run Code Online (Sandbox Code Playgroud)

鉴于上面的示例,return;在向订户发送错误之后是否有必要,或者在此块内执行是否立即停止?

objective-c reactive-cocoa

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

如何按指定数量增加IP地址?

我试图找出如何增加一个起始IP地址,并将其增加一个我指定的偏移量.我试图这样做,但我做错了,因为我得到的是各地的IP,甚至不是在同一网络范围内.

我目前正在做的是接受我的起始ip和结束ip,获取地址总数,然后将总ips递增一个偏移量,然后尝试实际增加IP.

我通过偏移量递增到总ips,所以我知道增加ip的数量.(我每个偏移完成不同的任务.)无论循环增加了多少"t",我增加了多少IP.现在我已经给出了破败,我的问题似乎只是实际上增加了ips,任何人都可以在这种情况下帮助我.谢谢.

            string from = txtStart.Text, to = txtEnd.Text;
            uint current = from.ToUInt(), last = to.ToUInt();

            ulong total = last - current;
            int offset = 3; //This is an example number, it actually could be anything.

            while (current <= last)
            {
             for (int t = 0; t < total; t += offset)
                    {
                        uint ut = Convert.ToUInt32(t);
                        current = current + ut;
                        var ip = current.ToIPAddress();
                    }  
              }
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的扩展类.他们工作正常.

public static class Extensions
    {
        public static uint ToUInt(this string …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

Task.Continuewith(在当前线程上)

我有一个方法,使用以下代码:

object frm = null;

// shows the overlay loading mask
Core.ShowLoadingMask("Please wait...");

// start task
Task.Factory.StartNew(() => {

    // go to server and get the data
    var employee = new Data.Entities.Employee(employeeId);

    // instantiate the class type (reflection)
    frm = Activator.CreateInstance(type, employee );

}).ContinueWith((task) => {

    // hide loading mas
    Core.HideLoadingMask();

    if (frm != null) this.Panel.Controls.Add(frm);

});
Run Code Online (Sandbox Code Playgroud)

那么,我如何强制ContinueWith()强制使用当前线程的代码,或者我做错了.

我需要的过程是:

  1. 在从服务器获取数据之前显示加载掩码
  2. 从服务器获取数据(可能需要3秒)
  3. 之后,退出任务并隐藏加载掩码.

任何线索?

c# winforms task-parallel-library async-await

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