小编use*_*890的帖子

使用LINQ为对象分页

如何在LINQ查询中实现分页?实际上,如果可以模仿sql TOP函数,我会感到满意.但是,我确信无论如何都需要尽快提供完整的分页支持.

var queryResult = from o in objects
                  where ...
                  select new
                      {
                         A = o.a,
                         B = o.b
                      }
                   ????????? TOP 10????????
Run Code Online (Sandbox Code Playgroud)

.net c# linq paging

82
推荐指数
6
解决办法
12万
查看次数

在lambda表达式中使用foreach循环的迭代器变量 - 为什么失败?

请考虑以下代码:

public class MyClass
{
   public delegate string PrintHelloType(string greeting);


    public void Execute()
    {

        Type[] types = new Type[] { typeof(string), typeof(float), typeof(int)};
        List<PrintHelloType> helloMethods = new List<PrintHelloType>();

        foreach (var type in types)
        {
            var sayHello = 
                new PrintHelloType(greeting => SayGreetingToType(type, greeting));
            helloMethods.Add(sayHello);
        }

        foreach (var helloMethod in helloMethods)
        {
            Console.WriteLine(helloMethod("Hi"));
        }

    }

    public string SayGreetingToType(Type type, string greetingText)
    {
        return greetingText + " " + type.Name;
    }

...

}
Run Code Online (Sandbox Code Playgroud)

调用后myClass.Execute(),代码打印以下意外响应:

Hi Int32
Hi Int32
Hi Int32  

很显然,我希望 …

c# lambda iterator

23
推荐指数
2
解决办法
9919
查看次数

投射列表<T> - 协方差/逆变问题

给出以下类型:

public interface IMyClass { }
public class MyClass : IMyClass { }
Run Code Online (Sandbox Code Playgroud)

我想知道如何将a转换List<MyClass>List<IMyClass>?关于协方差/逆变主题,我并不完全清楚,但据我所知,我不能因此而明白地列出名单.

我只能提出这个微不足道的解决方案; 缺乏优雅,浪费资源:

...
public List<IMyClass> ConvertItems(List<MyClass> input)
{
   var result = new List<IMyClass>(input.Count);
   foreach (var item in input)
   {
       result.Add(item);
   }
   return result;
}
....
Run Code Online (Sandbox Code Playgroud)

你怎么能以更优雅/高效的方式解决它?

(请注意,我需要.NET 2.0解决方案,但为了完整性,我很高兴看到使用更新框架版本的更优雅的解决方案.)

.net c# covariance contravariance .net-2.0

14
推荐指数
1
解决办法
3957
查看次数

.NET下的原子文件复制

我正在构建一个使用System.IO.File.Copy(...)函数复制文件的服务器应用程序.我的文件可能相当大,因此,如果机器崩溃,它很有可能在复制期间发生.

重新启动服务后,我应该能够获取复制任务并继续.如何检测服务器崩溃是否成功完成或中断了副本?

我目前的计划是将文件复制到临时名称,复制完成后将其重命名为最终名称.这样,文件命名能够在崩溃时携带状态信息.

你有什么好的/更好的建议吗?

编辑:目标操作系统是Win2003,因此事务NTFS不可用

.net robustness file-transfer atomicity

11
推荐指数
1
解决办法
2811
查看次数

结构的快速序列化/反序列化

我在简单的对象结构中表示了大量的地理数据,仅包含结构.我的所有字段都是有价值的.

public struct Child
{
   readonly float X;
   readonly float Y;
   readonly int myField;
}

public struct Parent
{
   readonly int id;
   readonly int field1;
   readonly int field2;
   readonly Child[] children;
}
Run Code Online (Sandbox Code Playgroud)

数据很好地分成了Parent[]-s的一小部分.每个数组包含几千个父实例.我有太多的数据来保存所有内存,所以我需要来回交换这些块到磁盘.(一个文件大约2-300KB).

什么是序列化/反序列化的最有效的方式Parent[],以一个byte[]为dumpint磁盘和回读?关于速度,我对快速反序列化特别感兴趣,写入速度并不那么关键.

简单BinarySerializer到足够好吗?或者我应该讨厌StructLayout(参见接受的答案)?我不确定这是否适用于数组字段Parent.children.

更新:对注释的响应 - 是的,对象是不可变的(代码更新),实际上children字段不是值类型.300KB听起来并不多,但我有数以万计的文件,所以速度确实很重要.

c# performance serialization struct

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

使用JavaScript中的动态内容填充IFRAME

我有一个IFRAME应该填充JavaScript的内容.如果内容在服务器上,我所要做的就是:

    function onIFrameFill() {
         myIframe.location.href = "HelloWorld.html";
     }
Run Code Online (Sandbox Code Playgroud)

但我拥有的内容是在客户端生成的HTML页面,并表示为字符串(我对它没有太大影响).如何以编程方式填充iframe的内容?

javascript iframe dynamic-content

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

将System.Decimal转换为System.Guid

我有一个大字典,其中键是十进制的,但System.Decimal的GetHashCode()非常糟糕.为了证明我的猜测,我运行了一个带有100.000 neigboring小数的for循环并检查了分布.100.000个不同的十进制数仅使用2个(两个!!!)不同的哈希码.

十进制表示为16个字节.就像Guid一样!但是Guid的GetHashCode()发行版非常好.如何在C#中将小数转换为Guid尽可能便宜? 不安全的代码没问题!


编辑:请求测试,所以这里是代码:

decimal d = 96000000000000000000m;
Dictionary<int, int> hashcount = new Dictionary<int, int>();
int length = 100000;
for (int i = 0; i < length; i++)
{
    int hashcode = d.GetHashCode();
    int n;
    if (hashcount.TryGetValue(hashcode, out n))
    {
        hashcount[hashcode] = n + 1;
    }
    else
    {
        hashcount.Add(hashcode, 1);
    }
    d++;
}

Console.WriteLine(hashcount.Count);
Run Code Online (Sandbox Code Playgroud)

这打印7.我不记得给我2的起始小数.

.net c# unsafe guid hashcode

10
推荐指数
2
解决办法
3792
查看次数

使用LINQ编写'CONTAINS'查询

给定查询的输出:

var queryResult = from o in objects
                  where ...
                  select new 
                      {
                         FileName = o.File,
                         Size = o.Size
                      }
Run Code Online (Sandbox Code Playgroud)

您认为检测文件是否在queryResult中的最佳方法是什么?这是我对LINQ的蹩脚尝试:

string searchedFileName = "hello.txt";
var hitlist = from file in queryResult
              where file.FileName == searchedFileName
              select file;
var contains = hitlist.Count() > 0;
Run Code Online (Sandbox Code Playgroud)

必须有一种更优雅的方法来计算结果.

.net c# linq code-formatting

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

File.Delete()是否在.NET下是原子的

目标操作系统:Win2003

正如其他关于文件操作原子性的SO问题所述,Win32根本不是为事务设计的.我仍然想知道文件删除是否可以是非原子的.毕竟,它要么被删除,要么被删除.或者文件是否可以保留在NTFS文件系统上的任何其他中间状态,这是因系统崩溃或其他原因导致的?

.net ntfs file atomic delete-file

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

WPF:XAML中的绑定列表 - 项目如何知道其在列表中的位置?

给定以下具有ListControl行为的XAML代码:

    <StackPanel>
        <ItemsControl Name="_listbox" ItemsSource="{Binding ElementName=_userControl, Path=DataContext}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <DockPanel>
                         ...
                    </DockPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
Run Code Online (Sandbox Code Playgroud)

由于列表可以很长(100-200项),并且项目看起来相似,我认为如果每个项目都会在列表中显示它们的位置,那么在滚动期间对用户会有帮助.模板中的项目如何知道自己在列表中的位置?

data-binding wpf xaml list

7
推荐指数
1
解决办法
6970
查看次数