标签: generic-list

如何过滤列表?

这是一种方法,应该将已分配的用户从列表中取出,并将未分配的用户保留在列表中.GuidList在按钮点击时添加了userId.profileList用于填充gridView.

这是代码:

private VList<VW_profiles> FilterAssigned(VList<VW_profiles> profileList)
{
    VList<VW_profiles> sortedList = new VList<VW_profiles>();
    foreach(VW_profiles profile in profileList)
    {
        if(GuidList.Count > 0)
        {
            foreach(Guid userId in GuidList)
            {
                if(profile.UserId != userId)
                {
                    sortedList.Add(profile)
                }
            }
        }       
        else
        {
            sortedList = profileList;
        }
    }
    return sortedList;
}
Run Code Online (Sandbox Code Playgroud)

现在这是我的问题.Everythings似乎工作得很好,直到profileList中的所有项目也被添加到GuidList中.然后我们不再对两个Guid ID进行否定,而是再次开始添加所有人.有没有人有任何关于如何做到这一点的建议是一种更有效的方法,并且一旦我们把所有事情都拿出来就避免加入.

谢谢!

c# sorting loops generic-list

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

C#:如何在BackgroundWorker进度报告回调中解决"Collection was modified"?

我已经使用了BackgroundWorkers了,但我以前从未遇到过这个问题.我的程序分析逻辑分析仪的输出,产生数据包,其中有数千个.为了防止更新延迟更新我的表单中的ListView(我之前报告了每个发现的,并且表单完全没有响应)我正在收集通用列表(List <Packet>)中的BackgroundWorker内的数据包和然后报告当找到n量(当前为250),或者发生异常时,或者当它完成时.

当我在List <Packet>上进行迭代时,问题发生在我的回调中,我得到一个InvalidOperationException,其中包含"Collection was modified"错误.我没有触及foreach中的集合(我正在添加到另一个集合中,但我认为没有理由可以修改我正在迭代的集合 - 再加上评论它不能解决问题.)我是甚至尝试锁定e.UserState,将e.UserState存储到本地作用域List <Packet>并锁定,似乎没有任何作用.

这是我的回调方法的代码:

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    progressBar.Value = e.ProgressPercentage;
    packetsListView.SuspendLayout();
    lock ((List<Packet>)e.UserState)
    {
        foreach (Packet packet in (List<Packet>)e.UserState)
        {
            packets.Add(packet);
            ListViewItem item = new ListViewItem(string.Format("{0}ns", Math.Round(packet.StartSampleNumber * 41.666667)));
            item.Tag = packet;
            item.SubItems.Add(new ListViewItem.ListViewSubItem(item, packet.Description));
            packetsListView.Items.Add(item);
        }
    }
    packetsListView.ResumeLayout();

    statusLabel.Text = string.Format("Analyzing...found {0} {1}", packetsListView.Items.Count, packetsListView.Items.Count == 1 ? "packet" : "packets");
}
Run Code Online (Sandbox Code Playgroud)

c# collections multithreading generic-list backgroundworker

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

为什么List <T> .Exists比foreach循环慢?

我在WinForms中,在保存对DataBase的更改之前,我必须检查使用的ErrorProvider是否为任何显示的控件保留错误.

我想出了几种方法可以做到这一点:

  • 一个简单的foreach循环在ControlContainer上:

        foreach (Control c in ctrlcontainer)
        {
            if (epOrderHeader.GetError(c) != string.Empty)
            {
                return true;
            }
        }
        return false;
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用List扩展方法Exists(谓词):

    return(ctrlcontainer.Exists(c => epOrderHeader.GetError(c)!= string.Empty);

从胃口开始,我预计第二个是最快的,但是使用我发现的Eqatec Profiler,foreach循环稍微快一些(在我的情况下大约1ms).虽然这是微不足道的,但我仍然想知道为什么会这样?

编译器如何翻译这些方法,为什么第一个更快?

c# loops generic-list

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

通用列表中的NullPointerException

我一直在搜索stackoverflow上的1000个NullPointerException帖子,并且在我的生活中不能说明为什么会发生这种情况; 除了明显的(它是空的).有人可以帮助我理解我不理解Generic Singly LinkedList导致我得到这个运行时错误的内容.

这是我的代码:

    import java.io.*;
    import java.util.*;

public class GList<T> {         
    private GNode<T> head;
    private GNode<T> cursor;

    private static class GNode<E>{
    private E data;        //NULLPOINTEREXCEPTION
    private GNode<E> next;

    public GNode(E data, GNode<E> next) {
        this.data = data;
        this.next = next;
    }
}                
public static class InnerList<E> {
    private String name;
    private GList<Integer> inner = new GList<Integer>();

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public GList<Integer> getInner() {
        return inner; …
Run Code Online (Sandbox Code Playgroud)

java generic-list nullpointerexception

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

如何使用DataTable和For Each Loop填充List?

我正在尝试使用DataTable填充List,我为每个循环检查每一行并将该项添加到列表中.但代码不起作用,我不断收到错误..

System.NullReferenceException:{"对象引用未设置为对象的实例."}

-Data:{System.Collections.ListDictionaryInternal}

-HelpLink:Nothing -Inner Exception:Nothing

-TargetSite:{System.Collections.Generic.List`1 [System.String] getListOfUsers()}

这是我的代码......

Function getListOfUsers() As List(Of String)

    'Dim i As Integer = 0
    Dim lUserNames As List(Of String) = Nothing

    Dim dt As DataTable = getDataTable(db_Config, "SELECT * FROM tblUsers")

    If dt.Rows.Count > 0 Then

        Try

            For Each dRowItem As DataRow In dt.Rows

                'i = i + 1

                'If IsDBNull(dt.Rows(0)("fldUserName").ToString) = False Then
                '    lUserNames.Add(dt.Rows(0)("fldUserName").ToString)
                'End If

                If dRowItem.Item("fldUserName").ToString <> "" Then
                    lUserNames.Add(dRowItem.Item("fldUserName").ToString)
                End If

            Next dRowItem

        Catch ex As Exception
            MsgBox(ex.ToString) …
Run Code Online (Sandbox Code Playgroud)

.net sql vb.net datatable generic-list

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

如何比较两个通用列表一个包含int而另一个包含类对象

如何比较这两个通用列表并根据ID获取匹配数据

List<int> _GetRecCust;
List<Tranobject> GetTransDeta;
Run Code Online (Sandbox Code Playgroud)

我试过了

var TransactionsToProcess = GetTransDeta.Where(x => _GetRecCust.Contains(Convert.ToInt32(x.ID)));
Run Code Online (Sandbox Code Playgroud)

但无法获得comman ID数据.

两者都有ID一个领域.

提前致谢

c# generic-list

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

为什么我的LINQ查询无法识别通用列表的成员?

我试图查询(通过LINQ)一个通用列表,它正在"行动",好像我"在哪里"的某些字段不存在.

这是代码:

private decimal GetPriceForMember_Code_Desc_Unit_Week(string member, string itemcode, string desc, string unit, int weeknum)
{
    Decimal price = 0.00M;
    if (unit == CRAFTWORKS_SC)
    {
        price = craftworksWeek1PVDSubsetList.Select(x => x.Price)
            .Where(x => x.ShortName.Equals(member))
            .Where(x => x.Description.Equals(desc))
            .Where(x => x.WeekNum.Equals(weeknum))
            .Where(x => x.ItemCode.Equals(itemcode));
    }
    //else if (unit == CHOPHOUSE) TODO: Finish
    return price;
}
Run Code Online (Sandbox Code Playgroud)

它失败了," 'string'不包含'ShortName'的定义,并且没有扩展方法'ShortName'接受类型'string'的第一个参数可以找到(你是否缺少using指令或汇编引用?) "

我的LINQ语法显然有问题,但我不知道是什么.代码中的泛型列表定义和声明如下:

public class PriceVarianceSubsetData
{
    public String ShortName { get; set; }
    public String ItemCode { get; set; }
    public String Description { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# linq generics class generic-list

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

如何根据两个条件从通用列表中获取项目?

我有一个自定义类型的通用列表,我试图找回一个类型的实例.我已尝试使用两个条件"FirstOrDefault"和"Where",但两个条件都给我相同的错误信息("运算符'&&'不能应用于'lambda表达式'的操作数'和'lambda表达'")

他们来了:

// FirstOrDefault
UnitItemCodeItemID uicii = 
    unitItemCodeItemIDList
        .FirstOrDefault((u => u.Unit == _unit) && (d => d.Description == desc));


// Where
UnitItemCodeItemID uicii = 
    unitItemCodeItemIDList
        .Where((u => u.Unit == _unit) && (d => d.Description == desc));
Run Code Online (Sandbox Code Playgroud)

我不知道它是否相关,但课程是:

public class UnitItemCodeItemID
{
    public string Unit { get; set; }
    public string Description { get; set; }
    public string ItemCode { get; set; }
    public int ItemID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# generics lambda generic-list

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