相关疑难解决方法(0)

如何轻松初始化元组列表?

我喜欢元组.它们允许您快速将相关信息分组在一起,而无需为其编写结构或类.这在重构非常本地化的代码时非常有用.

然而,初始化它们的列表似乎有点多余.

var tupleList = new List<Tuple<int, string>>
{
    Tuple.Create( 1, "cow" ),
    Tuple.Create( 5, "chickens" ),
    Tuple.Create( 1, "airplane" )
};
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?我希望得到一个类似于字典初始化器的解决方案.

Dictionary<int, string> students = new Dictionary<int, string>()
{
    { 111, "bleh" },
    { 112, "bloeh" },
    { 113, "blah" }
};
Run Code Online (Sandbox Code Playgroud)

我们不能使用类似的语法吗?

c# collections tuples list .net-4.0

251
推荐指数
5
解决办法
22万
查看次数

声明匿名类型列表

有没有办法声明匿名类型的列表对象.我的意思是

List<var> someVariable = new List<var>();
someVariable.Add(
             new{Name="Krishna", 
                 Phones = new[] {"555-555-5555", "666-666-6666"}}
                );
Run Code Online (Sandbox Code Playgroud)

这是因为我需要在运行时创建一个集合.提前致谢

c# asp.net anonymous-types c#-3.0

74
推荐指数
7
解决办法
9万
查看次数

一个字典,其中value是C#中的匿名类型

是否可以在C#中创建System.Collections.Generic.Dictionary<TKey, TValue>where TKey无条件类,以及TValue- 具有许多属性的匿名类,例如 - 数据库列名和它的本地化名称.

像这样的东西:

new { ID = 1, Name = new { Column = "Dollar", Localized = "??????" } }
Run Code Online (Sandbox Code Playgroud)

.net c# linq dictionary anonymous-types

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

创建匿名类型的通用列表有诀窍吗?

有时我需要使用一个元组,例如我有坦克和他们的目标坦克列表(他们追逐他们或类似的东西):

List<Tuple<Tank,Tank>> mylist = new List<Tuple<Tank,Tank>>();
Run Code Online (Sandbox Code Playgroud)

然后当我遍历列表时,我访问它们

mylist[i].item1 ...
mylist[i].item2 ...
Run Code Online (Sandbox Code Playgroud)

这是非常令人困惑的,我总是忘记什么是item1和什么是item2,如果我可以通过以下方式访问它们:

mylist[i].AttackingTank...
mylist[i].TargetTank...
Run Code Online (Sandbox Code Playgroud)

它会更清楚,有没有办法在没有定义类的情况下完成它:

MyTuple
{
public Tank AttackingTank;
public Tank TargetTank;
}
Run Code Online (Sandbox Code Playgroud)

我想避免定义这个类,因为那时我将不得不在不同的场景中定义许多不同的类,我可以做一些"技巧"并使这个匿名.

就像是 :

var k = new {Name = "me", phone = 123};
mylist.Add(k);
Run Code Online (Sandbox Code Playgroud)

当然,我定义它时没有类型传递给List的问题

c# generics anonymous-types

37
推荐指数
5
解决办法
4万
查看次数

List的返回类型

嗨,我需要找到一种方法来声明一个方法的匿名类型.这是我的代码:

public List<var> ListOfProducts(string subcategory)
{
    var products = (from p in dataContext.Products
                    join s in dataContext.SubCategories.Where(x => x.SubCatName == subcategory)
                        on p.SubcatId equals s.SubCatId
                    join b in dataContext.Brands on p.BrandId equals b.BrandId
                    select new
                    {
                        Subcategory = s.SubCatName,
                        Brand = b.BrandName,
                        p.ProductName,
                        p.ProductPrice
                    });
    return products;
} 
Run Code Online (Sandbox Code Playgroud)

我不知道我应该为该方法设置List的类型.在这种情况下我该怎么办?

c# linq anonymous-types

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

SelectMany Anonymous Type和Skip Iterations

.SelectMany当你并不总是想要返回一个结果时,我一直在努力寻找一个"干净"的模式来处理匿名类型.我最常见的用例如下所示:

  1. 我们有一份我想要报告的客户列表.
  2. 每个客户的数据都驻留在一个单独的数据库中,因此我做了一个并行数据 .SelectMany
  3. 在每个lambda表达式中,我收集客户对最终报告的结果.
  4. 如果应该跳过特定客户,我需要返回一个空列表.
  5. 我经常鞭打它们以便快速报告,所以我更喜欢匿名类型.

例如,逻辑可能看起来像这样:

//c is a customer
var context = GetContextForCustomer(c);
// look up some data, myData using the context connection
if (someCondition)
  return myData.Select(x => new { CustomerID = c, X1 = x.x1, X2 = x.x2 });
else
  return null;
Run Code Online (Sandbox Code Playgroud)

这可以作为foreach声明实现:

var results = new List<WhatType?>();
foreach (var c in customers) {
  var context = GetContextForCustomer(c);
  if (someCondition)
    results.AddRange(myData.Select(x => new { CustomerID = c, X1 = x.x1, X2 = x.x2 }));
} …
Run Code Online (Sandbox Code Playgroud)

c# linq anonymous-types

6
推荐指数
1
解决办法
5010
查看次数

为什么我不能在C#中创建匿名类型的列表&lt;T&gt;?

我是新来anonymous types的C#,我想创建一个listanonymous types包含3个变量:string strint numDataTime time

但是,当我尝试使用此问题的答案中的代码时: 匿名类的一般列表 对我不起作用。

我使用了一种简单的方法Console application,但我认为我得到了错误,因为我没有,System.Core因为有人在上述问题的评论中说:

(当然,您还需要引用System.Core。)

我不知道是什么System.Core,如果有的话,可能是问题所在

我使用Systme.Linq

这是代码:

var list = new[] { str, num, time }.ToList();
list.add("hi", 5, DateTime.Now);

Console.WriteLine(list[0].num);
Run Code Online (Sandbox Code Playgroud)

我也遇到问题时,我试图指定typevariables 例如string str

c# list anonymous-types .net-core

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

构建匿名类型和嵌套循环的泛型列表

我希望通过在嵌套循环中迭代其他两个列表来构建匿名类型列表。

var myList = new List<???>();
foreach (object x in GetAllX())
{
    if (Process(x))
    {
        foreach (object y in GetAllY(x))
        {
            myList.Add(new {
                X = x,
                Y = y
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用ToList(),构造一个匿名类型列表(请参阅此问题),但我不知道如何在上述情况下使用它。

请注意,我无法更改GetAllXGetAllY方法。

c# generics list anonymous-types

2
推荐指数
1
解决办法
2242
查看次数

如何在C#中一般实例化泛型类?

也许这很简单,但我没有使用Type它的类型和它的用途.

假设我想List<T>T= DoubleT= 创建一个UInt32,取决于某些函数的结果,比方说public static Type CheckType(String input);

在代码中:

Type t = Program.CheckType(someInput); // it returns typeof(Double) or typeof(UInt32)
if (t == typeof(Double))
    List<Double> l = new List<Double>();
else
    List<UInt32> l = new List<UInt32>();
Run Code Online (Sandbox Code Playgroud)

我知道上面的代码不会编译,因为我要让它l有两个不同的含义(一个double列表和一个unsigned int列表)......所以它引出了我的问题:

  • 有没有办法避免if上面的代码?

与此类似的东西:

Type t = Program.CheckType(someInput);
List<t> l = new List<t>(); // I know this won't compile either...
Run Code Online (Sandbox Code Playgroud)

我的意思是,这通常会实例化一个通用List ...

先感谢您!

编辑:

这是不是重复的的 …

c# generics instantiation

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

如何获取通用对象列表C#中的泛型对象的值

我需要帮助来获取对象值,例如,此对象位于对象列表中.

list<object> objectList = new list<object>();
objectList.Add( new {  id = 1,  name = "name1"});
objectList.Add( new {  id = 2,  name = "name2"});
Run Code Online (Sandbox Code Playgroud)

问题是我无法在列表中获取这些对象的值,并将它们的值放在excel文件中,我尝试了这个.

int row = 2
for(int i = 0; row < objectList ; i++){
 excelRow[row,1].Value = item[i].id
 excelRow[row,2].Value = item[i].name
row++
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

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