小编Mas*_*ick的帖子

ForEach不会更改/更改列表C#中的项目

我很确定这在我编写的一些代码中已经有用了,不知道我在这里缺少什么.

以下代码不会更改string列表中的值.为什么?

var items = listBox1.Items.Cast<string>().ToList();
items.ForEach(item => item = (!chkBox1.Checked) ? "move " + item : "move -check " + item);
Run Code Online (Sandbox Code Playgroud)

编辑:只是为了澄清,列表保持与创建时相同.

编辑:道歉,项目列表(listBox1.Items)包含如下字母数字字符串.

J00123456

J00123344

J00123458

另外,为了确认,我已成功完成了T的自定义列表(如下所示),这就是为什么我认为它可以在这里工作.

var tapes = new List<TapeInfo>();
... //Populated list
tapes.ForEach(x => x.vItem = "tapelib 3592 -eject " + x.vItem);  //Works here
Run Code Online (Sandbox Code Playgroud)

c# foreach

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

来自IP cam C#的流

我有以下代码无效.camUrl如果我加载到Firefox并从我的摄像头流式传输我的链接,但在运行时我的图片框中没有显示任何内容.有什么想法吗?

        public Thread _camThread;
        private string camUrl = "http://my-domain-ip:2080/videostream.cgi?user=admin&pwd=password";
        public HttpWebRequest webReq;
        public WebResponse webRes;
        public Stream sr;

        private void btnStart_Click(object sender, EventArgs e)
        {
            if (_camThread == null) _camThread = new Thread(new ThreadStart(RunCam));
            _camThread.Start();
        }

        private void RunCam()
        {
            try
            {
                webReq = (HttpWebRequest)WebRequest.Create(camUrl);
                webReq.AllowWriteStreamBuffering = true;
                webReq.Timeout = 20000;
                using (webRes = webReq.GetResponse())
                {
                    while ((sr = webRes.GetResponseStream()) != null)
                    {
                        image.Image = Image.FromStream(sr);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void …
Run Code Online (Sandbox Code Playgroud)

c# ip stream picturebox

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

检查列表<>中的重复项

我需要检查并显示List <>集合中包含的任何重复项.

//Check for duplicate items
foreach (string y in myListCollection)
{
    if (myListCollection.FindAll(x => x.Contains(y)).Count > 1)
    {
        foreach (string path in myListCollection.FindAll(x => x.Contains(y)))
        {
            listbox1.items.add(path);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这会返回整个列表.我做错了什么?

c# list duplicates

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

使用 EndOfStream 和检查 null 有什么区别?

我正在编写一个大型应用程序,其中涉及来自进程或文件流的一些流。下面有两个示例,展示了检测流结束的不同方法。我很好奇有什么区别以及哪一个最好使用?效率或性能有什么区别吗?另外,在 .NET 参考指南中,我注意到他们在方法中检查 null ,例如ReadAllLines从文件中流式传输(类似于下面的示例 2),那么为什么他们不使用EndOfStream

示例1:

...
StreamReader std_out = myProcess.StandardOutput;

while (!std_out.EndOfStream)
{
    string rLine = std_out.ReadLine();
    //Do something...
}
...
Run Code Online (Sandbox Code Playgroud)

示例2:

...
string rLine;
StreamReader std_out = myProcess.StandardOutput;

while ((rLine = std_out.ReadLine()) != null)
{
    //Do something...
}
...
Run Code Online (Sandbox Code Playgroud)

干杯。

c# null stream while-loop

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

使用C#中的WMI查询通过驱动器号获取HDD序列号

我有以下代码,通过模型字符串值获取硬盘序列号Win32_DiskDrive.但我需要通过分配的驱动器号获取序列号.这可能吗?如果是这样的话?

public string GetDriveSerial(string model)
{
    string serial = string.Empty;
    string query = "SELECT * FROM Win32_DiskDrive WHERE Model = '" + model + "'";
    try
    {
        using (var results = new ManagementObjectSearcher("root\\CIMV2", query))
        {
            foreach (ManagementObject result in results.Get())
            {
                serial = result["SerialNumber"].ToString();
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    return serial;
}
Run Code Online (Sandbox Code Playgroud)

c# wmi hard-drive

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

使用LINQ C#比较List <FileInfo>中的文件

我有两个文件集合List<FileInfo>.我目前正在使用2 x foreach循环遍历每个集合并匹配文件(如下所示).有没有更快的方法在LINQ和.RemoveAt找到时这样做.?

  • 我需要文件名和文件长度匹配.

            var sdinfo = new DirectoryInfo(srcPath);
            var ddinfo = new DirectoryInfo(dstPath);
    
            var sFiles = new List<FileInfo>(sdinfo.GetFiles("*", SearchOption.AllDirectories));
            var dFiles = new List<FileInfo>(ddinfo.GetFiles("*", SearchOption.AllDirectories));
    
            foreach (var sFile in sFiles)
            {
                bool foundFile = false;
                int i = 0;
    
                foreach (var dFile in dFiles)
                {
                    if (sFile.Name == dFile.Name && sFile.Length == dFile.Length)
                    {
                        foundFile = true;
                        dFiles.RemoveAt(i);
                    }
                    i += 1;
                }
            }
    
    Run Code Online (Sandbox Code Playgroud)

干杯.

c# linq compare file list

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

多个过滤器LINQ搜索C#

如果我填充了所有四个字符串,我有以下代码正确返回.但是,如果其中一个字符串为空,则返回的列表为空.基本上,我需要它返回一个列表,即使一个或多个甚至所有字符串都是空的.

private List<Search> FilterSearchResults(List<Search> results)
    {
        string _dataType = cmbISDataType.SelectedItem.ToString();
        string _medium = cmbISMedium.SelectedItem.ToString();
        string _pStatus = cmbISPStatus.SelectedItem.ToString();
        string _rStatus= cmbISRStatus.SelectedItem.ToString();

        return results
            .Where(a => a.Data_Type == _dataType && !string.IsNullOrWhiteSpace(_dataType))
            .Where(b => b.Medium == _medium && !string.IsNullOrWhiteSpace(_medium))
            .Where(c => c.PStat== _pStatus && !string.IsNullOrWhiteSpace(_pStatus ))
            .Where(d => d.RStatus== _rStatus && !string.IsNullOrWhiteSpace(_rStatus))
            .ToList();
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c# linq

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

为什么我的List.Contains不起作用?

出于某种原因,我的代码不起作用.我已确认文件夹中有.idx和.log文件.有人可以帮忙吗?

谢谢.

List<string> subDirList = new List<string>(Directory.GetFiles(srcPath, "*"));

if (subDirList.Contains(".idx") && subDirList.Contains(".log"))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

c# string contains list

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

使用 LINQ VB .NET 在 List(Of T) 中查找重复项不起作用

我有一个泛型List(Of T),其中包含一堆项目,这些项目在.ItemID. 我需要代码只返回重复项,但我下面的代码返回所有项目。

Dim items As List(Of ItemsClass.ItemCollection) = _
        New List(Of ItemsClass.ItemCollection)(oleObj.ListOfItemsToCopy(listViewItems)) 'Returns a list of items

Dim duplicates = From c In items Where (c.ItemID.Count > 1) Select c 'Needs to return duplicate items
Run Code Online (Sandbox Code Playgroud)

List(Of ItemCollection)项目示例如下

ItemID, Make,     Type     Year
123456  Ford      Falcon   1999
123457  Mazda     CX6      2001
123456  Ford      Ranger   2002
Run Code Online (Sandbox Code Playgroud)

我需要分组ItemID并返回所有重复的结果

linq vb.net

-4
推荐指数
1
解决办法
2778
查看次数

标签 统计

c# ×8

linq ×3

list ×3

stream ×2

compare ×1

contains ×1

duplicates ×1

file ×1

foreach ×1

hard-drive ×1

ip ×1

null ×1

picturebox ×1

string ×1

vb.net ×1

while-loop ×1

wmi ×1