小编CRK*_*CRK的帖子

如果有重复,Linq只删除一个项目

我有5个数字即:1 1 1 2 3; 除了最小数量之外,我必须将它们相加,但我只能删除它一次(如果最小值出现不止一次,我必须保留其余部分).我怎么能用Linq做到这一点?我想:

var min = nums.Min();
var minSum = nums.Where(x => x != min).Sum();
Run Code Online (Sandbox Code Playgroud)

但是它从列表中删除了所有1.如果出现超过1次,我需要一种方法从哪里出去.

所有这一切都与Linq有关.

c# linq sum

8
推荐指数
3
解决办法
449
查看次数

使用ByRef进行COM互操作方法签名

我有一个C#程序调用一个COM DLL,它有一个调用test两个参数的方法:传递第一个参数,传递ByVal第二个参数ByRef.

这就是COM DLL的作用:

Public Sub test(ByVal a As String, ByRef b As String)
    a = "a"
    b = "b"
End Sub
Run Code Online (Sandbox Code Playgroud)

这就是C#程序的作用:

test.Class1 x = new test.Class1();
            string a = "1";
            string b = "2";
            x.test(a, ref b);
Run Code Online (Sandbox Code Playgroud)

我注意到,如果我删除ref关键字,编译器不建议我错过ref关键字并传递参数ByVal.如果我错过ref关键字,这可能是一个大问题,因为在我知道它想要之前我无法注意到它ref.你知道为什么编译器会出现这种行为吗?

c# vb6 com-interop byref byval

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

解释静态成员

为什么Class1.a仍然为null,即使我引用它并更改其值?字符串是引用类型,所以我认为更改值会影响引用,但事实并非如此.有人能解释我为什么吗?这是静态声明者?

class Class1
{
    public static string a;
}
void Main()
{
    string a = Class1.a;
    a = "hello";
    MessageBox.Show(Class1.a);
}
Run Code Online (Sandbox Code Playgroud)

输出:null

c# string class

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

意外的Foreach行为C#

foreach loop当条件是有一个意外的行为true其实都是指令后内if statement,循环中断.我试着评论if语句并且一切正常(将所有元素迭代到ienumerable中).有人能解释我为什么吗?

var allRef = projDefinition
    .Element(msbuild + "Project")
    .Elements(msbuild + "ItemGroup")
    .Elements(msbuild + "COMReference")
    .Where(refElem => find.Any(f => refElem.FirstAttribute.Value.ToLower().Contains(f)))
    .Select(refElem => refElem);


foreach (var xElement in allRef)
{
    var name = xElement.FirstAttribute.Value;
    var dllPath = dllFiles.FirstOrDefault(dll => dll.ToLower().Contains(name.ToLower()));

    if (dllPath != null)
    {
        var dllName = dllPath.Substring(dllPath.LastIndexOf('\\') + 1, dllPath.LastIndexOf('.') - dllPath.LastIndexOf('\\') - 1);
        xElement.Remove();
        XElement elem = new XElement(msbuild + "Reference", new XAttribute("Include", dllName));
        elem.Add(new XElement(msbuild + "HintPath", HintPath.GetHintPath(dllPath)));
        elem.Add(new XElement(msbuild …
Run Code Online (Sandbox Code Playgroud)

c# xml linq foreach loops

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

标签 统计

c# ×4

linq ×2

byref ×1

byval ×1

class ×1

com-interop ×1

foreach ×1

loops ×1

string ×1

sum ×1

vb6 ×1

xml ×1