我试图比较两个已知大小相等的数组,并按索引比较项。通常,我将使用以下代码来实现这一目标:
public bool CompareLists(object[] arr1, object[] arr2)
{
for (int i = 0; i < arr1.Length; ++i)
{
if (!( <compare arr1[i] to arr2[i]; may not be equality comparison> ))
return false;
}
return true;
}
在C#中是否有一种功
我试图比较下面的数据。为什么SequenceEqual在下面不工作?我创建了两个list类,并希望进行比较。
public partial class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string ProductDescription { get; set; }
}
List<Product> p
我有两个具有相同价值的集合,但它们具有不同的参考价值。如果没有foreach语句,比较这两个集合的最佳方法是什么,下面是我创建的示例应用程序,
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace CollectionComparer
{
public class Program
{
private static void Main(string[] args)
{
var pe
我正在寻找一种快速查找哈希表(字符串到字节数组)集合值是否包含给定值的方法,我不能使用给定的包含,因为它将比较数组对象而不是其值。
我不介意使用linq / extension / implementing包含,只要它是短。
我试过:
byte[] givenArr = new[]{1,2,3,4}; //(a given arr)
bool contains=false;
Hashtable table;
foreach(var val in table.values)
if (CompareBytesFunction((byte[])val,givenArr))
conta
我想创建一个通用的LINQ函数来对数据库中select的结果进行分组。但是,对于每个数据库表,我应该有一个不同的group by。基本上,我尝试做的是用columnName1和columnName2对来自table1的结果进行分组
from element in databaseRows
group element by
new { column1 => element.Value("columnName1"), column2 => element.Value("columnName2")}
in
我想在C#中将两个字典与as键、一个string和一个int的列表进行比较,假设两个字典都有相同的键,而对于每个键作为值,则假设一个具有相同整数的列表(两者的顺序不一定相同)是相等的。
我使用了来自和相关问题的两种答案,但都没有通过测试套件中的测试函数DoesOrderKeysMatter和DoesOrderValuesMatter。
我的测试套件:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using System.Linq;
na
我有两个int列表
var a = new List<IList<int>>();
var b = new List<IList<int>>();
它们中的每一个都有下列数据:
var a = new List<IList<int>>()
{
new List<int>() { 1, 2 },
new List<int>() { 4, 5, 6 },
};
如何比较两个List<MyObject1>和List<MyObject2>?因此,如果一个值具有不同的值,则应该可以检查它。
(我知道我们可以用foreach.但我想要LINQ解决方案/)
谢谢!
public sealed class MyObject1
{
public string Name { get; set; }
public string Value { set; get; }
public Guid ID { get; set; }
}
public sealed class MyObject2
{
public s
我想要一个这样的测试:
[Test]
public void TestCollectionAssert ()
{
var a1 = new [] { new [] { "a" } };
var a2 = new [] { new [] { "a" } };
Assert.AreNotEqual (a1, a2);
//CollectionAssert.AreEqual (a1, a2);
CollectionAssert.AreEquivalent (a1, a2)
问题
有人能告诉我为什么我的单元测试在这个错误消息中失败了吗?
CollectionAssert.AreEquivalent失败。预期集合包含一个(多个)。实际集合包含0次事件。
目标
我想看看两个单子是否相同。如果两者都包含具有相同属性值的相同元素,则它们是相同的。命令是无关紧要的。
代码示例
这是产生错误的代码。list1和list2是相同的,即相互复制粘贴。
[TestMethod]
public void TestListOfT()
{
var list1 = new List<MyPerson>()
{
new MyPerson()
我使用的是xUnit,如果T是自定义类型,它无法确定2个IEnumerable<T>是否相等。
我尝试过使用LINQ SequenceEqual,但由于T的实例不同,因此返回false;
下面是一个不起作用的IEqualityComparer的基本测试
[Fact]
public void FactMethodName()
{
var one = new[] { new KeywordSchedule() { Id = 1 } };
var two = new[] { new KeywordSchedule() { Id =
我有这样的声明:
var vals =
from StandAloneUserPayment saup in _Session.Query<StandAloneUserPayment>()
.Fetch(x => x.RecurringPayments)
where
saup.User.UserId == userId
&& searchString.Contains(saup.FriendlyName, StringComparer.InvariantCultureIgnoreCase)
LINQ有方法在查询时“记住”它以前的查询结果吗?
考虑以下情况:
public class Foo {
public int Id { get; set; }
public ICollection<Bar> Bars { get; set; }
}
public class Bar {
public int Id { get; set; }
}
现在,如果两个或多个Foo具有相同的Bar集合(无论顺序是什么),则它们被认为是相似的 Foo。
示例:
foo1.Bars = new List<Bar>() { bar1, bar2 };
foo
我需要比较两个对象的列表。这个对象又有一个其他对象的列表。我得加入进来。
public class MaterialXML
{
public string Reference {get;set;}
public string MeasurementUnitCode {get;set;}
public IEnumerable<AlternateUnitXML> AlternateUnits { get; set; }
}
public class AlternateUnitXML
{
public string Code { get; set; }
我试图对一个对象列表进行分组,对象具有一个属性,它是一个列表。在使用下面的表达式时,它不会将具有列表的对象分组在一起,这大概是因为当它检查每个列表的相等性时,它并不匹配--尽管内容是相同的。
我知道这就是问题所在,就好像我停止对列表进行分组一样,代码输出了两项而不是三项。
我如何调整我的表达式,使其正确地将前两项(它们是相同的)分组为一个?
public class Item {
public string Id { get; set; }
public string Name { get; set; }
public IEnumerable<ChildItem> Ch
我有两个具有完全相同的引用元素的枚举,我想知道为什么Equals不是真的。
作为一个次要问题,下面用来比较每个元素的代码是有效的,但必须有更优雅的方法
var other = (ActivityService) obj;
if (!AllAccounts.Count().Equals(other.AllAccounts.Count())) return false;
for (int i = 0; i < AllAccounts.Count(); i++) {
if (!AllAccounts.ElementAt(i).Equals(other.AllAccounts.Eleme