我正在看MvcContrib网格组件,我很着迷,但同时被网格语法中使用的语法技巧击退:
.Attributes(style => "width:100%")
Run Code Online (Sandbox Code Playgroud)
上面的语法将生成的HTML的style属性设置为width:100%.现在如果你注意,"风格"没有指定,是从表达式中参数的名称推断出来的!我不得不深入研究这个并发现"神奇"发生的地方:
Hash(params Func<object, TValue>[] hash)
{
foreach (var func in hash)
{
Add(func.Method.GetParameters()[0].Name, func(null));
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,代码使用正式的编译时,参数名来创建属性名称 - 值对的字典.结果语法结构确实非常具有表现力,但同时也非常危险.lambda表达式的一般用法允许替换使用的名称而没有副作用.我在一本书中看到一个例子,说collection.ForEach(book => Fire.Burn(book))我知道我可以用我的代码编写collection.ForEach(log => Fire.Burn(log)),这意味着同样的事情.但是使用MvcContrib网格语法突然间,我发现代码主动查找并根据我为变量选择的名称进行分解!
这是C#3.5/4.0社区和lambda表达爱好者的常见做法吗?或者是一个我不应该担心的流氓一招特立独行?
获取某个文件夹中的文件名时:
DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in smFiles)
{
builder.Append(fi.Name);
builder.Append(", ");
...
}
Run Code Online (Sandbox Code Playgroud)
fi.Name让我与它的扩展名的文件名:file1.txt,file2.txt,file3.txt.
如何在没有扩展名的情况下获取文件名?(file1,file2,file3)
我使用多个项目,我希望递归删除名为'bin'或'obj'的所有文件夹,这样我确信所有项目都会重建所有内容(有时这是强制Visual Studio忘记以前的唯一方法)编译).
有没有快速的方法来完成这个(例如.bat文件)而不必编写.NET程序?
我需要在C#中使用JSON格式将以下数据写入文本文件.括号对于它是有效的JSON格式很重要.
[
{
"Id": 1,
"SSN": 123,
"Message": "whatever"
},
{
"Id": 2,
"SSN": 125,
"Message": "whatever"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我的模型类:
public class data
{
public int Id { get; set; }
public int SSN { get; set; }
public string Message { get; set;}
}
Run Code Online (Sandbox Code Playgroud) 我有这个JSON:
[
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 1",
"Values": [
"Acc 1"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "1",
"Values": [
"1"
]
}
}
],
"Name": "account",
"Id": "1"
},
{
"Attributes": [
{
"Key": "Name",
"Value": {
"Value": "Acc 2",
"Values": [
"Acc 2"
]
}
},
{
"Key": "Id",
"Value": {
"Value": "2",
"Values": [
"2"
]
}
}
],
"Name": "account",
"Id": "2"
},
{
"Attributes": [
{ …Run Code Online (Sandbox Code Playgroud) 如何在C#中检查文件是否为空?
我需要这样的东西:
if (file is empty)
{
// do stuff
}
else
{
// do other stuff
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个包含三个类作为属性的类:
public class Feeds
{
public Rentals Rentals { get; set; }
public Agent Agents { get; set; }
public NorthwindService.ServiceReference1.File File { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
var query = from r in ent.Rentals
join a in ent.Agents on r.ListingAgentID equals a.AgentID
select new Feeds
{
a.AgentID,
a.Alias,
a.Bio,
a.Email,
a.Fax,
r.Firstname,
r.IsStaff,
r.Languages
};
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
无法使用集合初始值设定项初始化类型'NorthwindService.WebForm1.Feeds',因为它没有实现'System.Collections.IEnumerable'C:\ Users\NorthwindService\NorthwindService\WebForm1.aspx.cs
请建议解决方案
我有两张桌子,我想用种子填充它.
我在Ubuntu中使用ASP.NET Core 2.
如何填充两个表的数据,哪一个与外键连接?流量计有许多注释,注意属于flometer.我想做这样的事情,但它应该存储在数据库中.
new Flowmeter
{
Make = "Simple model name",
SerialNum = 45,
Model = "Lor Avon",
Notes = new List<Note>()
{
new Note() { Value = 45, CheckedAt = System.DateTime.Now },
new Note() { Value = 98, CheckedAt = System.DateTime.Now }
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用域模型,并且正在思考我们在.NET中实现这两种方法的各种方法.你最喜欢的策略是什么?
这是我目前的实施:
public override bool Equals(object obj)
{
var newObj = obj as MyClass;
if (null != newObj)
{
return this.GetHashCode() == newObj.GetHashCode();
}
else
{
return base.Equals(obj);
}
}
// Since this is an entity I can use its Id
// When I don't have an Id, I usually make a composite key of the properties
public override int GetHashCode()
{
return String.Format("MyClass{0}", this.Id.ToString()).GetHashCode();
}
Run Code Online (Sandbox Code Playgroud) 问题:刚刚开始,解决方案之外的任何程序集的所有引用都无法解决,The referenced component 'SomeComponent' could not be found.在尝试构建时.这种情况发生在第三方组件(所有15个左右)以及所有.NET Framework程序集中 - 基本上任何不是同一解决方案中的另一个项目.
试图加载一些其他解决方案产生了同样的问题.但是,创建一个新的WinForms项目没有问题.(从头开始重新安装VS之前,它已经工作了,现在也不起作用.我创建了一个新的WinForms应用程序以及一个WPF应用程序,设计师也无法加载程序集.我尝试了目标3.5和2.0而没有运气.)
我试过的事情:
有没有人有这方面的经验,并知道如何让这个再次工作?我最强大的Google-fu让我失望了,所以我在这里问.如果需要,可以标记社区维基.
更新:我尝试"升级"Windows(到相同的版本),因为我没有看到Vista的修复选项,它仍然是一个禁忌.我重新安装了一切似乎相关的东西.到目前为止,看起来我只是需要备份和重新格式化,我想除非在明天之前出现解决方案.
Update2:我只是备份了数据并重新格式化了,所以我再也无法验证我还没有尝试过的任何想法,所以我只是让赏金自己到达最高投票答案并作为参考之后可能遇到此问题的其他人.
c# ×8
.net ×2
json ×2
.net-core ×1
arrays ×1
asp.net ×1
asp.net-mvc ×1
batch-file ×1
cmd ×1
equals ×1
gethashcode ×1
json.net ×1
lambda ×1
linq ×1
mvccontrib ×1