在F#中,只需说出[1..100]就可以生成一组数字.
我想在C#中做类似的事情.这是我到目前为止所提出的:
public static int[] To(this int start, int end)
{
var result = new List<int>();
for(int i = start; i <= end; i++)
result.Add(i);
return result.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,我现在可以通过说1.To(100)创建一个集合
不幸的是,这并不像[1..100]那样可读.有没有人想出更好的方法在C#中做到这一点?如果它是小写的,它是否更具可读性?1.to(100),例如?或者,"To"是一个坏词?类似于1.Through(100)更具可读性吗?
只是寻找一些想法.有没有其他人想出更优雅的解决方案?
编辑: 阅读完回复后,我使用以下范围重新编写了我的To方法:
public static int[] To(this int start, int end)
{
return Enumerable.Range(start, end - start + 1).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
我仍在寻找关于1.To(100)的可读性的想法
我在Koders上找到了这段代码:
private ServiceProvider SiteServiceProvider
{
get
{
if (serviceProvider == null)
{
serviceProvider = new ServiceProvider(site as VSOLE.IServiceProvider);
Debug.Assert(serviceProvider != null, "Unable to get ServiceProvider from site object.");
}
return serviceProvider;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道,有什么可能Debug.Assert(serviceProvider != null触发的方式吗?我的印象是new只能被异常中止,在这种情况下永远不会达到断言.
Rails为Ruby引入了一些核心扩展3.days.from_now,就像你期望未来三天的日期一样.使用C#中的扩展方法,我们现在可以执行类似的操作:
static class Extensions
{
public static TimeSpan Days(this int i)
{
return new TimeSpan(i, 0, 0, 0, 0);
}
public static DateTime FromNow(this TimeSpan ts)
{
return DateTime.Now.Add(ts);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(
3.Days().FromNow()
);
}
}
Run Code Online (Sandbox Code Playgroud)
或者怎么样:
static class Extensions
{
public static IEnumerable<int> To(this int from, int to)
{
return Enumerable.Range(from, to - from + 1);
}
}
class Program
{
static void Main(string[] args)
{
foreach (var i …Run Code Online (Sandbox Code Playgroud) 我有以下的Linq2Sql,它为我的'SELECT'语句做了不止一次往返.我不知道为什么.首先是代码,然后解释: -
from p in db.Questions
select new Models.Question
{
Title = p.Title,
TagList = (from t in p.QuestionTags
select t.Tag.Name).ToList()
}
Run Code Online (Sandbox Code Playgroud)
现在数据库是
问题<-one to many-> QuestionTags <-many to one-> Tag
所以一个问题有一个到多个标签,中间有一个链接表.这样,我可以多次重复使用标签.(如果有的话,我会对更好的架构持开放态度).
这样做会执行Linq2Sql生成的以下Sql代码
SELECT [t0].[QuestionId] AS [ID], etc.... <-- that's the good one
Run Code Online (Sandbox Code Playgroud)
.
exec sp_executesql N'SELECT [t1].[Name]
FROM [dbo].[QuestionTags] AS [t0]
INNER JOIN [dbo].[Tags] AS [t1] ON [t1].[TagId] = [t0].[TagId]
WHERE [t0].[QuestionId] = @x1',N'@x1 int',@x1=1
Run Code Online (Sandbox Code Playgroud)
第二个sql块被列为2x ..我认为这是因为第一个sql块返回两个结果,所以第二个sql块会针对第一个sql块的每个结果触发.
有什么方法可以使这个sql语句而不是1 + n,其中n =第一个查询的结果数?
我已经尝试了Eager和Lazy加载,并没有区别.
DataLoadOptions dataLoadOptions = new DataLoadOptions();
dataLoadOptions.LoadWith<Question>(x …Run Code Online (Sandbox Code Playgroud) 在我的域模型中,我有一个抽象类CommunicationChannelSpecification,它有子类,如FTPChannelSpecification,EMailChannelSpecification和WebserviceChannelSpecification.现在我想创建一个HQL查询,其中包含一个where子句,它将结果缩小到某些类型的通道规范.例如(用简单的英语)选择其类型出现在集合{FTPChannelSpecification,WebserviceChannelSpecification}中的所有CommunicationChannelSpecifications.
如何在HQL中实现这一目标?我正在使用NHibernate 2.0.1和每个子类的表继承映射策略...
谢谢!
帕斯卡尔
我想实现一个执行以下操作的post build事件
这是怎么做到的?
我在网页上有一个YouTube播放器.我需要动态更改此播放器播放的视频.
使用YouTube的无边框播放器(相对)很简单.它有loadVideoById()完美的工作方法.问题是,无边框播放器没有任何控件(播放/暂停等).在常规YouTube播放器拥有这一切,但它不具备的loadVideoById()方法.
有没有办法将常规玩家的控制包含在无边框播放器中,或者loadVideoById()在常规播放器中实现方法?
谢谢.
鉴于以下课程
public class Foo
{
public int FooId { get; set; }
public string FooName { get; set; }
public override bool Equals(object obj)
{
Foo fooItem = obj as Foo;
if (fooItem == null)
{
return false;
}
return fooItem.FooId == this.FooId;
}
public override int GetHashCode()
{
// Which is preferred?
return base.GetHashCode();
//return this.FooId.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经覆盖了该Equals方法,因为它Foo代表了Foos表的一行.哪个是覆盖的首选方法GetHashCode?
覆盖为什么重要GetHashCode?
我有几个文本框.我想让Enter按钮充当Tab.因此,当我将在一个文本框中时,按Enter将使我移动到下一个文本框.你能否告诉我如何实现这种方法而不在textbox类中添加任何代码(如果可能的话,没有覆盖等等)?
从字符串中检索单个字符作为单字符字符串的Ruby惯用方法是什么?str[n]当然有方法,但是(从Ruby 1.8开始)它返回一个字符代码作为fixnum,而不是字符串.你如何得到一个单字符串?
c# ×5
.net ×2
api ×1
build ×1
exception ×1
hashcode ×1
hibernate ×1
hql ×1
javascript ×1
linq-to-sql ×1
new-operator ×1
nhibernate ×1
overriding ×1
ruby ×1
set ×1
winforms ×1
youtube ×1