我有一些列表(其中T是自定义类,类有一些属性).我想知道如何使用Lambda表达式更改其中的一个或多个值,因此结果将与下面的foreach循环相同:
注意:列表中包含多个项目(多行)
foreach (MyClass mc in list)
{
if (mc.Name == "height")
mc.Value = 30;
}
Run Code Online (Sandbox Code Playgroud)
这是linq查询(使用Lambda表达式),但它与上部foreach循环不同,它只返回列表中的1个项目(一行)!
我想要的是,它返回所有项目(所有行),并且只返回适当的项目(WHERE扩展方法中指定的项目).
list = list.Where(w => w.Name == "height").Select(s => { s.Value = 30; return s; }).ToList();
Run Code Online (Sandbox Code Playgroud)
注意:这两个例子不一样!我再说一遍,linq只返回1项(一行),这是我不想要的东西,我也需要列表中的所有项目(比如foreach循环,它只做更改,但它不会删除任何项目).
我已经在PictureBox控件中有一个图像,现在我想传递一个新的图像.
会发生什么,是allpication Disposes(我捕获异常:"参数无效").
这是我的代码:
using (Image img = Image.FromFile(open.FileName))
{
part.Picture = img;
pictureBox1.InitialImage = null;
pictureBox1.Image = img;
}
Run Code Online (Sandbox Code Playgroud)
因此,当代码退出该方法时,它会直接显示为此主表单的Displose.我只在Form1启动的行上捕获异常.在这个问题上,没有什么可以解除的.当pictureBox正在绘画时(在Paint事件中),它一定是错误的,但我并没有被它所吸引.
我真的不知道如何解决这个问题.我甚至试图用来清除所有资源(通过调用垃圾收集),但似乎没有任何工作.
还有一件事:"part"是List的引用,所以当我尝试删除当前图像(用新图像替换它)时,我得到了另一个例外,例如:
"进程无法访问该文件,因为它正被另一个进程使用".
这是否与第一个异常有关(当新图像未在pictureBox中绘制时)?
我正在序列化一些数据,如字段和自定义类,以创建二进制数据(字节数组).
然后我想Deserialize从二进制数据回到字段和类.
但我得到一个例外.如果这两种方法在同一个程序集中发生,那么一切正常 - 但事实并非如此.
我在一个assambly中进行序列化,并在另一个中进行反序列化.这也是令人兴奋的说法:
Unable to find assembly 'MyAssamblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
注1:我没有将字段恢复的问题,只有类导致它们.
注2:我在两个程序集中都有相同的类.
这是我的代码(这是一个非常简单的例子):
public partial class Form1 : Form
{
List<Person> listPersons;
public Form1()
{
InitializeComponent();
listPersons = new List<Person>();
dataGridView1.DataSource = listPersons;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0)
{
Person p = new Person();
p.Name = textBox1.Text;
listPersons.Add(p);
}
}
}
class Person
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当您按下按钮时,数据IS将添加到列表中,但不会显示在列表中DataGridView.我错过了什么?
我曾尝试设置AutoGenerateColumns和VirtualMode到true,但它还是不解决问题.
我想知道如何编写Linq(使用标准点表示法中的lambda表达式)查询.我有一些名字的数组,我想根据一个声明retrevie一个新的名字数组.这是:对名称数组进行排序,并从名称上返回一个新列表,该名称以某个特定字母(比如字母M)开头.
这是我目前的数组:
string[] arrNames = { "Mike", "Zach", "Ella", "Allan", "Jo", "Roger", "Tito" };
Run Code Online (Sandbox Code Playgroud)
我想回复这样的名字:Mike,Roger,Tito,Zach - 这4个; 其他3个名字(Allan,Ella和Jo是以字母顺序字母"M"开头的字母开头的名字.这与使用运算符"StartsWith"不同.这个只选择在特定字母上开头的名字信.我想获得所有这一切都在从信字母顺序排列的(这样的名字开始从M到Z)的名字.
因此,带有名称的重新列表以字母"M"开头或以字母顺序查看.
米蒂亚
我尝试使用 BinaryWriter 然后使用 BinaryReader 编写一些代码。当我想写时,我使用 Write() 方法。但问题是,在 Write 方法的两行之间出现了一个新字节,该字节在 ASCII 表中为十进制 31(sometines 24)。你可以在这张图片上看到它:

您可以看到索引 4 处的字节(第 5 个字节)的 ASCII 十进制值是 31。我没有在那里插入它。正如您所看到的,第一个 4 个字节是为数字(Int32)保留的,接下来是其他数据(主要是一些文本 - 现在这并不重要)。
正如您从我编写的代码中看到的: - 在第一行输入数字 10 - 在第二行文本“这是一些文本...”
第 5 个字节(12 月 31 日)是怎么出现在中间的?
这是我的代码:
static void Main(string[] args)
{
//
//// SEND - RECEIVE:
//
SendingData();
Console.ReadLine();
}
private static void SendingData()
{
int[] commandNumbers = { 1, 5, 10 }; //10 is for the users (when they send some text)!
for (int i …Run Code Online (Sandbox Code Playgroud) 我希望该方法具有特定的返回类型,但不知何故我无法使其工作。
我有一个 XML 结构:
<Notifications>
<Alerts>
<Max>3<Max/>
<Med>2<Med/>
<Min>1<Min/>
</Alerts>
</Notifications>
Run Code Online (Sandbox Code Playgroud)
我想得到Max, Med,的值Min。但要点是我根本不需要任何 foreach 循环,我只希望该方法具有 List<string> 返回类型,或者更好地创建通用返回类型。
关键是,我没有任何自定义类(而且我不想拥有它)来填充其属性。
这是我到目前为止所知道的,但我在“List()”匿名方法上遇到了错误:
Here it returns:
List<string> items = GetAlerts();
//method to read:
public List<string> GetAlerts()
{
return xmlDoc1.Descendants("Notifications").Elements("Alerts").Select(s => new
{
MAX = s.Element("Max").Value,
MED = s.Element("Med").Value,
MIN = s.Element("Min").Value
}).ToList(); //error on this line
}
Run Code Online (Sandbox Code Playgroud)
如果这个方法是一个泛型返回类型,看起来会怎么样?这是不行的:
Here it returns:
List<object> items = setBLL2.GetAlert<List<object>>();
public T GetAlert<T>() where T:class
{
return (T)xmlDoc1.Descendants("Notifications").Elements("Alerts").Select(s => new
//ERROR up here …Run Code Online (Sandbox Code Playgroud) c# ×7
generics ×2
linq ×2
binaryreader ×1
binarywriter ×1
datasource ×1
dispose ×1
expression ×1
image ×1
lambda ×1
list ×1
sockets ×1
winforms ×1
xml ×1
yield-return ×1