小编nid*_*ndo的帖子

将DataTable作为参数传递给存储过程

我有一个用C#创建的数据表.

DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));

dt.Rows.Add("James", 23);
dt.Rows.Add("Smith", 40);
dt.Rows.Add("Paul", 20);
Run Code Online (Sandbox Code Playgroud)

我想将此传递给以下存储过程.

CREATE PROCEDURE  SomeName(@data DATATABLE)
AS
BEGIN
    INSERT INTO SOMETABLE(Column2,Column3)
    VALUES(......);
END
Run Code Online (Sandbox Code Playgroud)

我的问题是:我们如何将这3个元组插入SQL表?我们需要使用点运算符访问列值吗?或者还有其他方法吗?

c# t-sql sql-server ado.net stored-procedures

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

C# - 集合被修改;枚举操作可能不会执行

在我编写的冗长代码中有一个按钮单击事件。我有一个对象列表。每次单击按钮时,都应修改列表(例如,应删除某些项目),然后使用 foreach 循环进行迭代。

List<Person> lp=new List<Person>();
lp.RemoveAt(2);

foreach(Person j in lp)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行上述代码时,会导致异常。

InvalidOperationException : 集合被修改;枚举操作可能无法执行。

我在互联网上找到了一些解决方案并尝试了它们。其中之一是,

foreach(Person j in lp.ToList())
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但没有什么可以阻止异常。

有人可以帮忙吗?

c# collections

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

c#和LINQ - 将IGrouping转换为List

我编写了以下代码来查找对象列表中的常见对象

https://dotnetfiddle.net/gCgNBf

..............................

var query = setOfPersons
            .SelectMany(l => l.Select(l1 => l1))
            .GroupBy(p => p.Id)
            .Where(g => g.Count() == setOfPersons.Count);
Run Code Online (Sandbox Code Playgroud)

之后,我需要将"查询"转换为"人物"对象(列表)列表以实现其他目的.

我尝试使用"ToList()" ......但它说:

"无法将IGrouping转换为List".

有人可以帮我解决吗?

c# linq list igrouping

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

匹配 0 次或多次出现的正则表达式不起作用

这个问题可能听起来很愚蠢。但是我尝试了几种选择,但都没有奏效。

我在字符串变量中有以下内容。

string myText="*someText*someAnotherText*";
Run Code Online (Sandbox Code Playgroud)

我上面的意思是,“someText”之前可以有 0 个或多个字符。在“someText”之后和“someAnotherText”之前可以有 0 个或多个字符。最后,在“someAnotherText”之前可以有 0 次或多次出现任何字符。

我尝试了以下方法。

string res= Regex.Replace(searchFor.ToLower(), "*", @"\S*");
Run Code Online (Sandbox Code Playgroud)

它没有用。然后我尝试了以下方法。

string res= Regex.Replace(searchFor.ToLower(), "*", @"\*");
Run Code Online (Sandbox Code Playgroud)

即使那样也行不通。

有人可以帮忙吗?尽管我已经提到“*”来表示出现 0 次或多次,但它表示我没有提到出现次数。

c# regex

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

如果和其他LINQ

我有一个类结构,如下所示,

class class_A
{
    public bool isChecked;
    public int id;        
}

class class_B
{
    List<class_A> classAObjects=new List<class_A>();
}

class class_C
{
    List<class_B> classBObjects=new List<class_B>();
}
Run Code Online (Sandbox Code Playgroud)

并有一个从class_C创建的对象列表,

List<class_C> classCObjects=new List<class_C>();
Run Code Online (Sandbox Code Playgroud)

我想分配truefalseclass_A.isChecked为每个实例class_A基于一些条件.如果ID是100,那么它应该分配false.否则,它应该分配true.

这是我现在的代码:

classCObjects.ToList().ForEach(a=>a.classBObjects.ForEach(b=>b.classAObjects.ForEach(x=>x.isChecked=true)));
Run Code Online (Sandbox Code Playgroud)

以上分配true给所有人.有谁知道如何得到我需要的东西?

c# linq

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