标签: ienumerable

如何将DataTable转换为动态对象?

我怎么能转换DataTableIEnumerable<dynamicObject>

例如,我想转换任何 DataTable

ID | Name          DI | emaN
---------    or    ---------
 1 | x              2 | x
 2 | y              1 | y
Run Code Online (Sandbox Code Playgroud)

在对象列表中

// list 1      (ex 1)             // list 2    (ex 2)
{                                 {
  { ID = 1, Name = "x" }            { DI = 2, emaN = "x" }
  { ID = 2, Name = "y" }            { DI = 1, emaN = "y" }
}                                 }
Run Code Online (Sandbox Code Playgroud)

所以

list1.First().ID    // 1 …
Run Code Online (Sandbox Code Playgroud)

c# datatable ienumerable dynamic

18
推荐指数
3
解决办法
4万
查看次数

Assert.AreEqual不会在IEnumerable实现上使用我的.Equals覆盖

我有一个PagedModel类,它实现IEnumerable只返回ModelData,忽略分页数据.我还重写了Equals和GetHashCode,以允许比较两个PagedModel对象的ModelData,PageNumber和TotalPages以及PageSize.

这是问题所在

Dim p1 As New PagedModel() With {
    .PageNumber = 1,
    .PageSize = 10,
    .TotalPages = 10,
    .ModelData = GetModelData()
}

Dim p2 As New PagedModel() With {
    .PageNumber = 1,
    .PageSize = 10,
    .TotalPages = 10,
    .ModelData = GetModelData()
}

p1.Equals(p2) =====> True
Assert.AreEqual(p1, p2) ======> False!
Run Code Online (Sandbox Code Playgroud)

看起来NUnit调用它的内部EnumerableEqual方法来比较我的PagedModel而不是使用我提供的Equals方法!有没有办法覆盖这种行为,或者我是否必须编写自定义断言.

ienumerable nunit assert

18
推荐指数
1
解决办法
2230
查看次数

C#List <T> vs IEnumerable <T>性能问题

嗨,假设这两种方法:

private List<IObjectProvider> GetProviderForType(Type type)
        {
            List<IObjectProvider> returnValue = new List<IObjectProvider>();

            foreach (KeyValuePair<Type, IObjectProvider> provider in _objectProviders)
            {
                if ((provider.Key.IsAssignableFrom(type) ||
                    type.IsAssignableFrom(provider.Key)) &&
                    provider.Value.SupportsType(type))
                {
                    returnValue.Add(provider.Value);
                }
            }
            return returnValue;
        }

private IEnumerable<IObjectProvider> GetProviderForType1(Type type)
        {
            foreach (KeyValuePair<Type, IObjectProvider> provider in _objectProviders)
                if ((provider.Key.IsAssignableFrom(type) ||
                    type.IsAssignableFrom(provider.Key)) &&
                    provider.Value.SupportsType(type))

                    yield return provider.Value;              
        }
Run Code Online (Sandbox Code Playgroud)

哪一个更快?当我查看第一种方法时,我看到内存是为List分配的,我认为不需要它.该IEnumerable的方法似乎要快给我.

例如,假设你打电话

int a = GetProviderForType(myType).Count;
int b = GetProviderForType1(myType).Count();
Run Code Online (Sandbox Code Playgroud)

现在,另一个问题是,这两个之间是否有性能差异?

你怎么看?

c# performance ienumerable list

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

如何获得IEnumerable的第一个元素

是否有更好的方法来获取IEnumerable类型的第一个元素:

foreach (Image image in imgList)
{
     picture.Width = (short)image.Columns;
     picture.Height = (short)image.Rows;
     break;
}
Run Code Online (Sandbox Code Playgroud)

这是类型的确切声明:

public class ImageList : IEnumerable, IDisposable
Run Code Online (Sandbox Code Playgroud)

.net c# ienumerable linq-to-objects html-lists

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

如何使用ASP.NET MVC 3编辑IEnumerable <T>?

鉴于以下类型

public class SomeValue
{
    public int Id { get; set; }
    public int Value { get; set; }
}

public class SomeModel
{
    public string SomeProp1 { get; set; }
    public string SomeProp2 { get; set; }
    public IEnumerable<SomeValue> MyData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想创建该类型的编辑形式,SomeModel这将包含常规的文本字段SomeProp1,并SomeProp2再将装有一个文本字段,每个表SomeValueSomeModel.MyData收集.

这是怎么做到的?如何将值绑定回模型?

我目前有一个表单显示每个值的文本字段,但它们都具有相同的名称和相同的ID.这显然不是有效的HTML,并且会阻止MVC将值映射回来.

asp.net-mvc ienumerable .net-4.0 asp.net-mvc-3

17
推荐指数
1
解决办法
6152
查看次数

将单个实例对象作为IEnumerable返回

我有类foo的例子,我想把它作为IEnumerable返回.我可以在不创建新列表的情况下执行此操作.

也许类似如下:

IEnumerable<foo>.fromInstance(foo)
Run Code Online (Sandbox Code Playgroud)

c# ienumerable casting

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

如何创建单例IEnumerable?

C#是否提供了一种很好的方法来将单个实体类型转换TIEnumerable<T>

我能想到的唯一方法是:

T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

我想应该有更好的方法.

c# generics ienumerable

17
推荐指数
3
解决办法
4060
查看次数

将复选框绑定到MVC中的int数组/可枚举

@Html.CheckBox("orderNumbers", new { value = 1 })
@Html.CheckBox("orderNumbers", new { value = 2 })
@Html.CheckBox("orderNumbers", new { value = 3 })
@Html.CheckBox("orderNumbers", new { value = 4 })
@Html.CheckBox("orderNumbers", new { value = 5 })

[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<int> orderNumbers) { }

[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<string> orderNumbers) { }
Run Code Online (Sandbox Code Playgroud)

如果我在我的动作方法中使用第一个签名,我会得到一个空的IEnumerable.

如果我使用第二个签名,我确实收到了值,但我也收到了未选择值的假值(因为MVCs模式阴影所有复选框都带有隐藏字段).

我会收到类似的东西 orderNumbers = { "1", "2", "false", "4", "false" }

为什么我不能得到数字列表?

int checkbox ienumerable model-binding asp.net-mvc-3

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

如何使用GetEnumerator()实现IEnumerable <T>?

我希望我的类型能够实现IEnumerable<string>.我尝试在Nutshell中关注C#,但出了点问题:

public class Simulation : IEnumerable<string>
{
    private IEnumerable<string> Events()
    {
        yield return "a";
        yield return "b";
    }

    public IEnumerator<string> GetEnumerator()
    {
        return Events().GetEnumerator();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了构建错误

错误1'EventSimulator.Simulation'未实现接口成员'System.Collections.IEnumerable.GetEnumerator()'.'EventSimulator.Simulation.GetEnumerator()'无法实现'System.Collections.IEnumerable.GetEnumerator()',因为它没有匹配的返回类型'System.Collections.IEnumerator'.

c# ienumerable

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

IEqualityComparer和Contains方法

我有这个简单的类与2个枚举字段,我试图在集合(List<T>)中找到此对象的一个​​项目,但Contains方法无法正常工作

public class Calculator : IEqualityComparer<Calculator>
{
    public DashboardsComputationMode ComputationMode { get; set; }
    public Modes Mode { get; set; }

    public Calculator(DashboardsComputationMode dashboardsComputationMode, Modes mode)
    {
        ComputationMode = dashboardsComputationMode;
        Mode = mode;
    }

    public bool Equals(Calculator x, Calculator y)
    {
        return (x.ComputationMode.Equals(y.ComputationMode) && x.Mode.Equals(y.Mode));
    }

    public int GetHashCode(Calculator obj)
    {
        return obj.ComputationMode.GetHashCode() ^ obj.Mode.GetHashCode();
    }
}

public enum DashboardsComputationMode
{
    Weighted = 0,
    Aggregated = 1,
    PR = 2,
    CurrentValue = 3,
    EquivalentHours = 4,
    AggregatedCorrected = …
Run Code Online (Sandbox Code Playgroud)

.net c# ienumerable

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