我无法从集合中删除重复项,我已经为类Employee实现了IEqualityComparer仍然没有得到输出
static void Main(string[] args)
{
List<Employe> Employeecollection = new List<Employe>();
Employeecollection.Add(new Employe("abc","def"));
Employeecollection.Add(new Employe("lmn","def"));
Employeecollection.Add(new Employe("abc", "def"));
IEnumerable<Employe> coll = Employeecollection.Distinct(new Employe());
foreach (Employe item in coll)
{
Console.WriteLine(item.fName + " " + item.lName );
}
}
Run Code Online (Sandbox Code Playgroud)
下面是Employee类实现,这里我实现了IEqualityComparer
class Employe : IEqualityComparer<Employe>
{
public string fName { get; set; }
public string lName { get; set; }
public Employe()
{
}
public Employe(string firstName, string LastName)
{
this.fName = firstName;
this.lName = LastName;
}
#region IEqualityComparer<pcf> Members
public bool …Run Code Online (Sandbox Code Playgroud) 我想Volatile在c#中看到关键字的实时使用.但我无法投射最好的例子.以下示例代码无Volatile关键字如何工作?
class Program
{
private static int a = 0, b = 0;
static void Main(string[] args)
{
Thread t1 = new Thread(Method1);
Thread t2 = new Thread(Method2);
t1.Start();
t2.Start();
Console.ReadLine();
}
static void Method1()
{
a = 5;
b = 1;
}
static void Method2()
{
if (b == 1)
Console.WriteLine(a);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我得到一个值为5.如何在不使用volatile关键字的情况下工作?
基本上我在这里想表示字符串是不可变的一个例子,所以我采取了下面的例子,我知道GetHashCode()不返回地址,但我如何区分两个变量引用不同的内存位置?
在下面的代码中,我想要一个字符串变量的地址
string s = "hello";
Console.WriteLine(s.GetHashCode());
s = s + "User";
Console.WriteLine(s.GetHashCode());
Run Code Online (Sandbox Code Playgroud)
但在String Builder中,GetHashCode()返回相同的值
StringBuilder sb = new StringBuilder();
sb.Append("hi");
Console.WriteLine(sb.GetHashCode());
sb.Append("hello");
Console.WriteLine(sb.GetHashCode());
Run Code Online (Sandbox Code Playgroud) 我有这样的场景:
"abcdef
123sq
gh"
Run Code Online (Sandbox Code Playgroud)
应该重新排列为"abcdef 123sq gh".
为此,我使用正则表达式,它工作正常:
Match match = Regex.Match(myString, @""".*""", RegexOptions.Singleline);
if (match.Success) {
myString= myString.Replace(match.Value, match.Value.Replace("\n", ""));
}
Run Code Online (Sandbox Code Playgroud)
但这不适用于以下场景:
"abc" "def"
asdf123456
"abc"
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,它考虑了第一个和最后一个引号,并将3行作为一个返回.
我有一个Employee Collection,我希望以这样的方式进行过滤,即只应过滤前2列,并且应附加第3列值,最终结果应该在一行中
以下是我的代码
List<Employe> Employeecollection = new List<Employe>();
Employeecollection.Add(new Employe("Employee1", "Dept1","Language1"));
Employeecollection.Add(new Employe("Employee2", "Dept2", "Language2"));
Employeecollection.Add(new Employe("Employee3", "Dept3", "Language3"));
Employeecollection.Add(new Employe("Employee3", "Dept3", "Language3"));
Employeecollection.Add(new Employe("Employee1", "Dept1", "Language2"));
foreach (Employe item in Employeecollection.GroupBy(x => new { fName = x.EmpName, lName = x.EmpDept, mName = x.KnownLanguages }).Select(g => g.First()))
{
Console.WriteLine(item.EmpName + " " + item.EmpDept + " " + item.KnownLanguages);
}
Run Code Online (Sandbox Code Playgroud)
但我想显示如下结果
Employee1 Dept1 Language1,Language2 Employee2 Dept2 Language2 Employee3 Dept3 Language3