我有以下内容:
String sql = "SELECT * FROM Temp WHERE Temp.collection = '" + Program.collection + "'";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
Program.defaultCollection = (String)cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
我想在执行语句后得到第二列.我知道它只返回一行有两列
我在网上看过,我必须阅读结果的每一行,还有其他方法吗?
我有一个Customer有以下成员的班级.
class Customer
{
public string ID { get; set; }
public string Name { get; set; }
public string Age { get; set; }
}
class Test
{
private void load()
{
Customer objCust=new Customer();
objCust.ID="1";
objCust.Name="Hello";
objCust.Age="23";
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将这个实体绑定到我的DataGridView,但它没有向我显示任何行.
我使用以下代码将此Class对象绑定到DataGridView.
datagridview1.DataSource = objCust;
Run Code Online (Sandbox Code Playgroud) 我有一个媒体元素播放的视频文件.我需要继续玩,所以我试过:
me.play();
me.MediaEnded += new RoutedEventHandler(me_MediaEnded);
Run Code Online (Sandbox Code Playgroud)
使用此事件方法:
//loop to keep video playing continuously
void me_MediaEnded(object sender, EventArgs e)
{
//play video again
me.Play();
}
Run Code Online (Sandbox Code Playgroud)
但是,上面没有重播视频文件.为什么?我做错了什么?
我有这个代码:
Console.Title = "System Reader";
Console.WriteLine("Enter the Domain-Address <or local>:");
string domain = Console.ReadLine();
Console.Clear();
string date = DateTime.Now.ToString("yyyy-MM-dd");
string time = DateTime.Now.ToString("HH-mm-ss");
double count = 1;
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "user_" + domain + "_" + date + "_" + time + ".txt");
string ComputerName = Environment.MachineName;
Console.Clear();
if (domain == "local")
{
ObjectQuery user = new ObjectQuery("SELECT * FROM Win32_UserAccount WHERE LocalAccount = True");
ManagementObjectSearcher userSearcher = new ManagementObjectSearcher(user);
TextWriter tw = new StreamWriter(path);
tw.Write("Account Type" + "\t" …Run Code Online (Sandbox Code Playgroud) 我在互联网上阅读的所有内容都让我觉得这个程序应该运行但我一直都会收到错误.错误说明:
"无法将类型'system.collections.generic.IEnumerable'隐式转换为'string'.存在隐式转换".
我错过了什么吗?
class Program
{
static void Main(string[] args)
{
string entry;
Console.Write("Input String: ");
entry = Console.ReadLine();
entry = entry.Reverse();
//Error occurs here ^
Console.Write(entry);
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个水晶报表,然后在创建它之后,创建了一个winform,在其中导入了水晶报表库(以代码显示),并使用报表查看器来查看该报表,但是我无法查看该报表,代码,我是Crytal Reports的新手,我做的代码是:
码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
namespace InventorySoftware
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.reportViewer1.RefreshReport();
}
private void button1_Click(object sender, EventArgs e)
{
//string ReportSources = "";
ReportDocument cryRpt = new ReportDocument();
cryRpt.Load("C:\\Users\\Ahsan\\Desktop\\PROJECT INVENTORY SOFTWARE\\InventorySoftware\\InventorySoftware\\CrystalReport1.rpt");
reportViewer1.ReportSource = cryRpt;
reportViewer1.Refresh();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了错误, reportViewer1.ReportSource = cryRpt; 错误是
Error 1 'Microsoft.Reporting.WinForms.ReportViewer' does …Run Code Online (Sandbox Code Playgroud) 我在var集中有各种字符串
var linhas = new[] { line8, line9, line10}
Run Code Online (Sandbox Code Playgroud)
我想在一个消息框中显示它们,但是!我不想展示那些空的,所以我使用以下内容
foreach (var l in linhas)
if (l != null)
{
MessageBox.Show(l);
}
Run Code Online (Sandbox Code Playgroud)
但正如预测的那样,它一次只能显示一条消息.有可能以某种方式从列表中删除空行,并在单个MessageBox中仅显示除null之外的那些行吗?
MessageBox.Show(linenotnull8 + "\n" + linenotnull10);
Run Code Online (Sandbox Code Playgroud) 我正在使用DataGridView来显示来自SQLite数据库的数据。一栏是打开分配给该行的pdf的目录。该代码有效,但是,每当我单击列标题时,都会出现错误:
索引超出范围。必须为非负数并且小于集合的大小。
实际上,每当我单击列文本(仅“ PDF”或任何其他列的文本)时,都会引发该错误。但是,当我在文本外部(在排序框中的任意位置)单击时,它会重新排列我的列,这没关系。有任何想法吗?
该代码有效,打开了PDF,但是我不希望用户意外单击标题文本而导致程序崩溃。这是datagridview打开pdf的代码。
private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
{
string filename = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
if (e.ColumnIndex == 3 && File.Exists(filename))
{
Process.Start(filename);
}
}
Run Code Online (Sandbox Code Playgroud)

我有一些.NET 4.5代码:
var result = db.storedProcedure(param)
if (!result.Any()) { return; }
foreach (var entry in result)
{
// Some code...
}
Run Code Online (Sandbox Code Playgroud)
在foreach,抛出异常:
The query results cannot be enumerated more than once.
Run Code Online (Sandbox Code Playgroud)
如何检查是否result为空?我也尝试过if (result.Count() == 0),它也会在foreach循环中抛出相同的异常.我也试过了foreach (var entry in result.ToList()),也抛出同样的异常.
我也尝试过:
var result = db.storedProcedure(param)
if (!result.Any()) { return; }
var resultList = result.ToList();
foreach (var entry in resultList) {}
Run Code Online (Sandbox Code Playgroud)
而且我仍然在该foreach循环中得到相同的异常.
必须有一些方法可以轻松检查Linq结果集是否为空.我究竟做错了什么?
我似乎无法弄清楚为什么我一直收到这个错误.
方法IndexOf没有重载采用'1'参数
这是代码和错误:

c# ×10
winforms ×3
foreach ×2
.net ×1
database ×1
datagridview ×1
dictionary ×1
enumeration ×1
linq ×1
mediaelement ×1
messagebox ×1
replay ×1
reverse ×1
sql ×1
sql-server ×1
streamwriter ×1
string ×1
textwriter ×1
wpf ×1