标签: generic-list

使用另一个列表更新一个列表所需的代码量是多少?

假设我有一个列表:

IList<int> originalList = new List<int>();
originalList.add(1);
originalList.add(5);
originalList.add(10);
Run Code Online (Sandbox Code Playgroud)

另一个清单......

IList<int> newList = new List<int>();
newList.add(1);
newList.add(5);
newList.add(7);  
newList.add(11);
Run Code Online (Sandbox Code Playgroud)

如何更新originalList以便:

  1. 如果int出现在newList中,请保持
  2. 如果int没有出现在newList中,请删除
  3. 将newList中的任何整数添加到原来的列表中

这样 - 制作originalList的内容:

{ 1, 5, 7, 11 }
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为我有一个带有孩子集合的对象.当用户更新此集合时,而不是仅删除所有子项,然后插入他们的选择,我认为如果我只是对添加或删除的子项执行操作,而不是拆除整个集合,并插入newList孩子们好像都是新手.

编辑 - 抱歉 - 我写了一个可怕的标题......我应该写'最少量的代码'而不是'有效'.我认为我已经把很多答案扔掉了.他们都很棒......谢谢!

c# generics merge generic-list

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

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

Concat和/或合并两个通用列表中的对象

我需要帮助解决这个问题...我有两个相同对象的列表"SearchResult",这个对象有一个id属性和一个score属性.在两个列表中可以存在相同的id,但是具有不同的分数,所以我需要创建一个组合相同id的新List,但是得分必须是两个得分的总和,最后,列表按最终得分排序.我怎样才能做到这一点?我搜索linq查询,但我找不到任何解决方案.

我希望你能帮助我,谢谢!

c# linq generic-list

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

需要一种高效的方法来从列表中返回所有重复项

我将使用一个包含大约500,000个项目的集合,并且正在寻找一种获得所有重复项目的好方法.仔细阅读这篇文章后,我看到最流行的解决方案是使用散列集.但是,如果我想让所有颜色为红色的汽车不仅仅是Car4和Car5呢?

Car1.Color = Red;

Car2.Color = Blue;

Car3.Color = Green;

Car4.Color = Red;

Car5.Color = Red;
Run Code Online (Sandbox Code Playgroud)

鉴于问题,这将是一个相当快速的方法吗?

编辑:我在那篇文章中看到,下面的代码可以很容易地改变,以满足我的需要.而且我不确定是否有更好的方法来解决问题,但我会留下帖子只是为了看.

var duplicates = from car in cars
                 group car by car.Color into grouped
                 from car in grouped
                 select car;
Run Code Online (Sandbox Code Playgroud)

c# linq lambda generic-list

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

如何在C#中将DataTable转换为对象类型List

我想转换DataTableList<object>C#.这是我的代码.但它没有用.请帮我

public List<object> ShowMessage()
{
    List<object> obj = new List<object>();

    DataTable dt = new DataTable();
    dt.Columns.Add("ID");
    dt.Columns.Add("Name");

    dt.Rows.Add("1","AAA");
    dt.Rows.Add("2", "BBB");
    dt.Rows.Add("3", "CCC");

    foreach (DataRow dr in dt.Rows)
    {
        obj.Add(dr);
    }

    return obj;
}
Run Code Online (Sandbox Code Playgroud)

这是错误 -

在此输入图像描述

c# datatable generic-list

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

无法在c#中找出这个公式

对不起,我是编码的新手,在尝试一切之后我无法弄清楚这一点!我有6个屏蔽文本框,用户输入分贝值,应该将它们保存到列表中,将每个输入到公式中并输出求和的分贝值,但它只是将变量添加为6,这是计数列表而不是实际值.当我尝试一个foreach循环时,它使它成为一个无限循环.

private void dBAddButton_Click(object sender, EventArgs e)
    {         
        List<double> addDBList = new List<double>();
        double final;
        double added = 0;

        addDBList.Add(double.Parse((dB1.Text)));
        addDBList.Add(double.Parse((dB2.Text)));
        addDBList.Add(double.Parse((dB3.Text)));
        addDBList.Add(double.Parse((dB4.Text)));
        addDBList.Add(double.Parse((dB5.Text)));
        addDBList.Add(double.Parse((dB6.Text))); 

            for (int i = 0; i < addDBList.Count; i++)
           {
            added += Math.Pow(10, (i / 10));
           }

        final = 10 * Math.Log10(added);

        totaldB.Text = final.ToString();                  
    }
Run Code Online (Sandbox Code Playgroud)

}

公式基本上是 10log[10^(first value/10)+10^(second value/10)...+10^(nth value/10)]

c# for-loop formula generic-list winforms

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

方法参数的泛型类型

这是场景:

public static <T> List<T> isTriggeredByBlackList(Map<String, T> params, Class<T> clz)   {
    System.out.println(clz.getName());

    return null;
}
Run Code Online (Sandbox Code Playgroud)

我要的是通过其中StringList<String>以这种方法.

说到它String,它的工作正常:

Map<String, String> map1 = new HashMap<String, String>();
map1.put("11", "22");
isTriggeredByBlackList(map1, String.class);
Run Code Online (Sandbox Code Playgroud)

但是当我试图通过时List<String>,它出错了:

Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> l = new ArrayList<String>();
l.add("11");
l.add("22");
map.put("1", l);
isTriggeredByBlackList(map, List.class);    //compile error!
Run Code Online (Sandbox Code Playgroud)

编译错误如下:

The method isTriggeredByBlackList(Map<String,T>, Class<T>) in the type CommonTest is not applicable for the arguments (Map<String,List<String>>, Class<List>)
Run Code Online (Sandbox Code Playgroud)

我需要的是只编写一个适用于String类型和List<String>类型的方法. …

java generics generic-list

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

如何使用JSON.NET反序列化JSON对象数组?

这里的"数组"和"对象"都可能不是一个合适的术语,但我确信你得到了我的大陆漂移.

我看到这个示例用于从官方文档序列化/反序列化自定义对象:

 product.Name = "Apple";
 product.ExpiryDate = new DateTime(2008, 12, 28);
 product.Price = 3.99M;
 product.Sizes = new string[] { "Small", "Medium", "Large" };

 string output = JsonConvert.SerializeObject(product);
 //{
//  "Name": "Apple",
//  "ExpiryDate": "2008-12-28T00:00:00",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);
Run Code Online (Sandbox Code Playgroud)

但我需要反序列化一个对象的"数组"作为JSON元素,如:

IEnumerable<Platypus> deserializedProduct = JsonConvert.DeserializeObject<Platypus>(output);
Run Code Online (Sandbox Code Playgroud)

...要么:

List<Platypus> deserializedProduct = JsonConvert.DeserializeObject<Platypus>(output);
Run Code Online (Sandbox Code Playgroud)

在JsonConvert/JSON.NET方面,需要做些什么才能实现这一目标?

c# json generic-list json.net json-deserialization

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

声明List <IEntity <T >>其中T:class

我做了一个界面

public interface IEntity<T> where T:class
{
   public Save(T entity);
   public Update(T entity);
   IEnumerable<T> GetAll();
   T GetById(int id);
}
Run Code Online (Sandbox Code Playgroud)

现在,我有另一个类,其中我想创建此IEntity类型的列表.

public class myClass
{
   public List<IEntity<T>> NewList = new List<IEntity<T>>();  // how to tell the compiler where T is class
}
Run Code Online (Sandbox Code Playgroud)

但是这给了我错误的说法

The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

c# list generic-list

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

Powershell数组:何时使用它们; 何时避免; 和使用它们的问题

为什么.NET Framework ArrayList类.Add方法在PowerShell实现中不起作用?

除非我另外纠正,否则我认为我的故事的整体道德可能是:不要假设本机PowerShell方法将与.NET方法相同,并且在PowerShell中尝试.NET方法时要小心.

我正在寻找的原始解决方案是从一个函数返回一个日期列表,作为一个数组,用户定义的日期范围作为参数.然后引用日期数组来移动和读取以日期戳命名的文件.

我遇到的第一个问题是创建一个动态数组.我不知道我在做什么,并且错误地.Add@()数组声明上调用.NET 方法.

使用"1"参数调用"Add"的异常:"Collection具有固定大小."

我认为我需要找到一个动态数组类型,当我真正的问题是我做得不对时.这让我走向了一个不同的方向,直到很久以后,我发现应该使用+=语法将对象添加到PowerShell数组中.

无论如何,在我回到如何正确使用PowerShell数组之前,我在其他一些切线上了.

然后我找到了.NET ArrayList类.好的.现在我有一个动态数组对象.我阅读了文档,其中说我应该使用该.Add方法向集合中添加元素.

然后开始寻求更深入的理解,因为我经历了几天头脑紧张的挫折试图解决问题.

我制作了一个最初工作的实现.它产生了一个日期范围 - 但它也产生了一些奇怪的行为.我观察到奇怪的日期返回,例如:

0001年1月1日星期一12:00:00 AM

事实证明,我发现这是你执行此操作时获得的结果:

Get-Date 0
Run Code Online (Sandbox Code Playgroud)

ArrayList被返回时,首先,索引值的数组元素的列表,然后将数组值.这根本没有任何意义.我开始探索我是否正确地调用函数,我是否遇到某种可变范围问题,或者我是否只是疯了.

我现在相当确信我的挫败感是由于缺乏一个可靠的初学者参考,不仅仅展示了如何进行简单数组实现的几个例子,而是用其他解决方案描述了一些注意事项.

让我在这里解释一下,实现数组/集合的三种方法,以及我试图生成的解决方案 - 即日期范围内的日期列表.

出于某种原因,我最初认为在Powershell中向.NET ArrayList添加元素的正确方法是使用.Add方法.它的记载.我仍然不明白为什么这不起作用(严重 - 有人请赐教).通过实验,我发现通过使用+=将对象添加到ArrayList 的方法,我可以获得准确的结果.

不要这样做.这绝对是错的.它会产生我上面描述的错误:

Function Get-DateRangeList {
    [cmdletbinding()]
    Param (
        [datetime] $startDate,
        [datetime] $endDate
    )

    $datesArray = [System.Collections.ArrayList]@()  # Second method

    for ($d = $startDate; $d -le $endDate; $d = $d.AddDays(1)) {
        if ($d.DayOfWeek -ne 'Sunday') { …
Run Code Online (Sandbox Code Playgroud)

arrays powershell arraylist generic-list

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