如何在C#中检查文件是否为空?
我需要这样的东西:
if (file is empty)
{
// do stuff
}
else
{
// do other stuff
}
Run Code Online (Sandbox Code Playgroud) 我确信我在这里遗漏了一些简单的东西.我正在尝试遵循Code First Entity Framework教程,该教程告诉我使用一些数据注释.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace Model
{
public class Destination
{
public int DestinationId { get; set; }
[Required]
public string Name { get; set; }
public string Country { get; set; }
[MaxLength(500)]
public string Description { get; set; }
[Column(TypeName="image")]
public byte Photo { get; set; }
public List<Lodging> Lodgings { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
编译器对前两个注释没有任何问题,但它似乎不喜欢:[Column(TypeName="image")].
错误:
找不到类型或命名空间名称"列".
找不到类型或命名空间名称"ColumnAttribute".
我正在使用Visual Studio 2012和Entity Frameworks …
我如何显示已隐藏使用的内容
this.Hide();
Run Code Online (Sandbox Code Playgroud)
我试过了
MainMenuForm.Show();
Run Code Online (Sandbox Code Playgroud)
这只是说我需要一个对象参考.然后我尝试了:
MainMenuForm frmMainMenu = new MainMenuForm();
frmMainMenu.Show();
Run Code Online (Sandbox Code Playgroud)
这似乎表明了适当的形式.但是当你退出应用程序时,它仍然保留在内存中,因为它没有显示隐藏的表单,而是显示了表单的新版本.实际上有2个表格实例(一个隐藏,一个可见).
只是为了澄清,MainMenuForm是启动形式.单击(例如)单击选项1时,MainMenuForm会在打开选项1表单时隐藏自身.我想知道的是如何制作MainMenuForm打开的选项1表单"取消隐藏"MainMenuForm然后关闭它自己.
这里的正确程序是什么?
提前致谢.
我正在尝试从XML文件中读取并使用它来填充我创建的问题对象.这是XML:
<?xml version="1.0" encoding="utf-8" ?>
<quiz>
<problem>
<question>Which of the following languages could be used in both Visual Studio and Unity?</question>
<answerA>Cobol</answerA>
<answerB>C#</answerB>
<answerC>C??</answerC>
<answerD>French</answerD>
<correct>B</correct>
</problem>
<problem>
<question>What does XML stand for?</question>
<answerA>eXtremely Muddy Language</answerA>
<answerB>Xerxes, the Magnificent Chameleon</answerB>
<answerC>eXtensible Markup Language</answerC>
<answerD>eXecutes with Multiple Limitations</answerD>
<correct>C</correct>
</problem>
</quiz>
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的课程.问题出在loadQuestions()方法中.
public partial class frmQuestions : Form
{
private XmlDocument doc;
private XmlNode theQuiz;
private List<Question> questions;
private Random random;
public frmQuestions(string docName)
{
InitializeComponent();
doc = new XmlDocument();
doc.Load(docName); …Run Code Online (Sandbox Code Playgroud) 我需要对许多列表框中包含的数据进行排序.用户将能够使用无线电盒在两种不同类型的排序之间进行选择,其中一种默认情况下在表格加载时进行检查.我已经创建了所需的IF语句,以便测试该单选按钮的检查条件是否为真.但我需要一些帮助来创建自定义排序算法.
每个列表包含相似的查看数据,每行开始的前缀唯一不同.例如,第一个列表框中的每一行以前缀"G30"开头,第二个列表框将以"G31"开头,依此类推.总共有10个列表框(就前缀而言是G30-G39).
第一个搜索算法必须按前13个字符的数字顺序对行进行排序.
示例:这是排序前数据的外观
G35:45:58:11 JG07
G35:45:20:41 JG01
G35:58:20:21 JG03
G35:66:22:20 JG05
G35:45:85:21 JG02
G35:64:56:11 JG03
G35:76:35:11 JG02
G35:77:97:12 JG03
G35:54:29:11 JG01
G35:55:51:20 JG01
G35:76:24:20 JG06
G35:76:55:11 JG01
Run Code Online (Sandbox Code Playgroud)
这就是排序后应该如何看待
G35:45:20:41 JG01
G35:45:58:11 JG07
G35:45:85:21 JG02
G35:54:29:11 JG01
G35:55:51:20 JG01
G35:58:20:21 JG03
G35:64:56:11 JG03
G35:66:22:20 JG05
G35:76:24:20 JG06
G35:76:35:11 JG02
G35:76:55:11 JG01
G35:77:97:12 JG03
Run Code Online (Sandbox Code Playgroud)
如您所见,前缀是相同的.因此它被排序,最低,首先是下一对整数,然后是下一对和下一对,而不是"JG"之后的值.
第二种排序算法将忽略前13个字符,并按"JG"之后的值的顺序排序,最高的第一个.
任何帮助?这里有一些代表给你:)
提前致谢
编辑
namespace Jumpgate_Network_Program
{
partial class ViewForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary> …Run Code Online (Sandbox Code Playgroud) 我有一个用 6 个随机生成的数字填充的数组。首先,它生成一个 1 到 49 之间的随机数,然后根据数组中的数字进行检查。如果发现重复,它应该再次生成一个随机数,然后再次执行检查。如果没有重复,则将数字添加到数组中。
这是代码:
public void populateArray()
{
for(int i = 0; i < numberLine.length; i++)
{
randomNumber = 1 + randomGen.nextInt(49);
for(int j = 0; j < i; j++)
{
if (numberLine[j] == randomNumber)
{
i--;
}
else
{
continue;
}
}
if(i >= 0)
{
numberLine[i] = randomNumber;
}
else
{
continue;
}
}
Arrays.sort(numberLine);
}
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,这仍然允许重复,尽管很少(大约 50 个数组中的 1 个),例如6 6 16 24 34 46. 但是当我尝试通过取出随机数元素并使用像 30 这样的数字来复制它时,我无法重现结果。怎么了?
我不确定这是否可行,而且我在C#.NET中使用程序集还是很新的.
我想要做的是在提供该类的字符串名称时创建一个类的实例.像这样的东西:
using MyAssembly;
namespace MyNameSpace
{
Class MyClass
{
int MyValue1;
int MyValue2;
public MyClass(string myTypeName)
{
foreach(Type type in MyAssembly)
{
if((string)type == myTypeName)
{
//create a new instance of the type
}
}
AssignInitialValues(//the type created above)
}
//Here I use an abstract type which the type above inherits from
private void AssignInitialValues(AbstractType myClass)
{
this.value1 = myClass.value1;
this.value2 = myClass.value2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
显然你无法将字符串与类型进行比较,但它说明了我正在尝试做的事情:在提供的字符串中创建一个在不同程序集中找到的类型.
有什么想法吗?
编辑:
尝试后:
var myObject = (AbstractType) Activator.CreateInstance(null, myTypeName);
AssignInitialValues(myObject);
Run Code Online (Sandbox Code Playgroud)
我收到了一些错误:
如何检索模型中的列表?
这就是我正在尝试的:
private void cbxPlayers_SelectedValueChanged(object sender, EventArgs e)
{
List<Record> records = new List<Record>();
string selectedPlayer = cbxPlayers.SelectedItem.ToString();
using (ProgressRecordContext context = new ProgressRecordContext())
{
records = (from Player in context.Players
where Player.Name == selectedPlayer
select Player.Records).ToList<Record>();
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用,我错过了什么?
这些是他们需要的模型:
public class Player
{
[Key][DatabaseGenerated(DatabaseGeneratedOption.None)]
public int AccountNumberId { get; set; }
public string Name { get; set; }
public virtual List<Record> Records { get; set; }
}
public class Record
{
public int RecordId { get; set; } …Run Code Online (Sandbox Code Playgroud)