小编Co.*_*den的帖子

C#中的批量更新

为了在数据库中插入大量数据,我曾经将所有插入信息收集到列表中并将此列表转换为a DataTable.然后我通过将该列表插入数据库SqlBulkCopy.

我发送生成的列表
LiMyList
,其中包含我要插入数据库的所有批量数据的信息,并将其
传递给我的批量插入操作

InsertData(LiMyList, "MyTable");
Run Code Online (Sandbox Code Playgroud)

哪里InsertData

 public static void InsertData<T>(List<T> list,string TableName)
        {
                DataTable dt = new DataTable("MyTable");
                clsBulkOperation blk = new clsBulkOperation();
                dt = ConvertToDataTable(list);
                ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
                using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
                {
                    bulkcopy.BulkCopyTimeout = 660;
                    bulkcopy.DestinationTableName = TableName;
                    bulkcopy.WriteToServer(dt);
                }
        }    

public static DataTable ConvertToDataTable<T>(IList<T> data)
        {
            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
            DataTable table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (T item in data) …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server bulk

58
推荐指数
3
解决办法
8万
查看次数

比较两个因子而不计算

有没有办法比较两个数字中哪个阶乘数更大而不计算?
场景是我正在创建ac#console应用程序,它需要两个因子输入

123!!!!!!
456!!!  
Run Code Online (Sandbox Code Playgroud)

我想要做的就是比较哪个阶乘值大于其他因素,我所做的代码片段

try
{
    string st = Console.ReadLine();
    Int64 factCount = 0;
    while (st.Contains('!'))
    {
       factCount = st.Where(w => w == '!').Count();
       st = st.Replace('!', ' ');

    };
    decimal result = 1 ;
    for (Int64 j = 0; j < factCount; j++)
    {
        UInt64 num = Convert.ToUInt64(st.Trim());
        for (UInt64 x = num; x > 0; x--)
        {
            result = result * x;
        }
    }
    if (factCount == 0)
    {
        result = Convert.ToUInt64(st.Trim());
    }


    string st2 = Console.ReadLine(); …
Run Code Online (Sandbox Code Playgroud)

.net c# decimal factorial

37
推荐指数
4
解决办法
2916
查看次数

conditional使用LINQ更新列表

我有一份清单

List<Myclass> li = new List<Myclass>();
Run Code Online (Sandbox Code Playgroud)

Myclass的地方

class Myclass
{
public string name {get;set;}
public decimal age {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

li中的项目看起来像

在此输入图像描述

 i want to update `li` according to name but with `LINQ` like

li.where(w=> w.name = "di") = li.Where(w => w.name =="di").select(s => {s.age = 10;return s;}).Tolist();
li.where(w=> w.name = "marks") = li.Where(w => w.name =="marks").select(s => {s.age = 20;return s;}).Tolist();
li.where(w=> w.name = "grade") = li.Where(w => w.name =="grade").select(s => {s.age = 10;return s;}).Tolist();
Run Code Online (Sandbox Code Playgroud)

并希望看起来像这样的结果

在此输入图像描述

我的代码给出错误,请你告诉我怎么做

c# linq list

23
推荐指数
4
解决办法
12万
查看次数

无法设置数据网格视图的行可见false

我有一个DataGridView我设置的地方DataSource:

taskerEntities te = new taskerEntities();
var OMsMasterDescriptiveIndicators = te.MyTable.Select(x => new lccls {Id = x.Id, name = x.name }).ToList();
MyGrid.DataSource = OMsMasterDescriptiveIndicators;
Run Code Online (Sandbox Code Playgroud)

和我class lccls一样

public class lccls
    {
        public string Id { get; set; }
        public Nullable<decimal> name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在某个事件中,我想让当前行不可见:

 MyGrid.Rows[5].Visible = false;
Run Code Online (Sandbox Code Playgroud)

但我无法做到这一点.而是抛出异常,并显示以下错误消息:

与货币经理的头寸相关联的行不能隐藏

我怀疑原因与设置有关DataSource,但为什么呢?

c# datasource datagridview

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

将DataSource设置为Datagridview后添加一行

我有很多与datagrid的数据源绑定有关的问题.我有一个DatagridView,我从列表中设置DataSource

List<Myclass> li = new List<MyClass>();

MyClass O = new MyClass();
O.Name = "Aden";
O.LastName = "B";
O.Id = 12;
li.Add(O);
O = new MyClass();
O.Name = "Li";
O.LastName = "S";
O.Id = 22;
li.Add(O);

Mydgv.DataSource = li;
Run Code Online (Sandbox Code Playgroud)

MyClass的地方

public Class MyClass
{
 public string Name {get; set;}
 public string LastName {get; set;}
 public decimal Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在想要添加一个新的行到我的DataGridView

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
Mydgv.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)

但它是不可能的,因为它引发错误的数据源的DataGrid与列表绑定.所以我的第一个问题是我怎么能这样做?

我的第二个问题是,为了做到这一点,我提出了一个解决方案来改变我的List li并向其添加新行数据,然后将其设置为datagrid的数据源,但我认为它不是一个可行的解决方案是否有更好的解决方案?

甚至试图通过CurrencyManager来做到这一点

CurrencyManager …
Run Code Online (Sandbox Code Playgroud)

c# data-binding datasource datagridview currencymanager

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

如何从组合框中选中哪个单选按钮?

我有这些组框:

在此输入图像描述

我想根据检查的单选按钮的真实状态运行一些代码,如:

string chk = radiobutton.nme; // Name of radio button whose checked is true
switch(chk)
{
    case "Option1":
        // Some code
        break;

    case "Option2":
        // Some code
        break;

    case "Option3":
        // Some code
        break;
}
Run Code Online (Sandbox Code Playgroud)

有没有直接的方法,所以我只能得到已选中的单选按钮的名称?

c# windows-forms-designer

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

获取两个给定日期之间的所有月份名称

我正在尝试创建一个函数,它在c#中的两个日期之间给出所有月份名称

List<string> liMonths = MyFunction(date1,date2);
Run Code Online (Sandbox Code Playgroud)

我的功能是

MyFunction(DateTime date1,DateTime date2)
{

//some code
return listOfMonths;
}
Run Code Online (Sandbox Code Playgroud)

你能帮帮我怎么办?

c#

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

通过进度条显示执行进度

我有一个愚蠢的问题,但我被卡住了.我正在执行一个存储过程表单,我的代码过程需要时间,所以为此我显示一个进度条,显示执行的进度,但存储过程执行,没有任何东西,我增加进度条的值.

这是我的代码

void btnYes_Click(object sender, EventArgs e)
{
   if (DialogResult.Yes == MessageBox.Show("Are you sure", "", MessageBoxButtons.YesNo))
    {
        try
        {
         dbDataEntities db = new dbDataEntities();
        string myquery = "DECLARE @return_value int EXEC    @return_value = [dbo].[ssspUpdateMarksOfStudent] SELECT 'Return Value' = @return_value";
         //progressbar1.Maximum = 5000; 
         //progressbar1.value = ?; // how could i increment it
         //
         db.Database.ExecuteSqlCommand("myquery");



        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,我尝试通过设置当前执行程序时没有增加的值来使用秒表

Stopwatch st = new Stopwatch();
st.Start();
progressbar1.Maximum = 5000; 
progressbar1.Value = Convert.ToInt16(st.Elapsed.Seconds);
//My stored procedure call 
st.Stop(); …
Run Code Online (Sandbox Code Playgroud)

.net c# stored-procedures backgroundworker progress-bar

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

获取错误的服务器名称

在此输入图像描述我正在执行一个查询,我想从中获取系统上安装的所有服务器名称
所以我用这个查询做了

select srvname  from sysservers    
Run Code Online (Sandbox Code Playgroud)

它给了我服务器名称,但它不是正确的服务器名称,它给我srvname

WIN-1BKHGVK7J3A\SQLSERVER2008R2

但这不是我的服务器名称,我试图通过此查询从另一种方式做到这一点

Select @@Servername   
Run Code Online (Sandbox Code Playgroud)

它还给出了错误的服务器名称 WIN-1BKHGVK7J3A\SQLSERVER2008R2

但是当我用这个查询做的时候

SELECT SERVERPROPERTY ('ServerName')  
Run Code Online (Sandbox Code Playgroud)

它提供了正确的服务器名称,AIS-OCTACORE\SQLserver2008r2
但这是限制,它只提供当前的服务器名称,我想在系统上安装所有服务器名称,
你能告诉我为什么我的服务器名称出错?
我怎么能得到所有的服务器名称

sql sql-server-2008-r2

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

Edmx需要Primary_Key吗?

这是一个问题在.net中创建Edmx时,在创建DataBase的Edmx时,只添加那些具有主键的表和视图.
这个问题很容易解决,但只是在表或视图中制作列主键,但我没有得到它为什么必要的实际原因?
任何人都可以解释背后的原因吗?

.net entity-framework primary-key edmx

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