我有一个array称为object存储的对象,某些对象的属性(skuID)与其他一些具有不同属性()的存储相同storingID,我如何根据array distinct它们的(skuID)进行调整?
Storing(string storingID, skuID, storageID, price, expiry)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个但它不起作用:
List<storing> storingAll = (List<storing>)Session["storingAll"];
List<storing> displayedStoring = storingAll.Distinct().ToArray();
Run Code Online (Sandbox Code Playgroud) 假设我有一个名为Person的类:
public class Person
{
public int Age { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一份人员名单:
Person { Age = 20, FirstName = "John", LastName = "Joe" }
Person { Age = 20, FirstName = "John", LastName = "Joe" }
Person { Age = 10, FirstName = "James", LastName = "Dokes" }
Run Code Online (Sandbox Code Playgroud)
我想要的是(新的或旧的具有新属性)列表按年龄,名字和姓氏对人进行分组我还想知道该对象被分组的次数.
所以上面的结果将是:
Person { Age = 20, FirstName = "John", LastName = "Joe", Count = 2 …Run Code Online (Sandbox Code Playgroud) 简而言之,我需要在编译时不知道转换IEnumerable list(带有值IEnumerable<T>).我认为可以做到的唯一方法如下,但我发现它非常难看.HashSet<T> setT
public IEnumerable GetHashSet(IEnumerable source)
{
Type itemType = source.GetType().GetGenericArguments()[0];
Type listOpen = typeof(List<>);
Type listClosed = listOpen.MakeGenericType(new Type[] { itemType });
IList list = Activator.CreateInstance(listClosed) as IList;
foreach (var obj in source)
list.Add(obj);
Type hashSetOpen = typeof(HashSet<>);
Type hashSetClosed = hashSetOpen.MakeGenericType(new Type[] { itemType });
return Activator.CreateInstance(hashSetClosed, list) as IEnumerable;
}
Run Code Online (Sandbox Code Playgroud)
问题是,HashSet<T>没有任何方法可以通过某些非通用接口添加对象(相比之下,List<T>有IList.Add(object)).它也没有一个带有"裸"IEnumerable的构造函数(也没有List<T>).
我有一个列表,我想创建一个没有重复值记录的新列表
public List<links> results = new List<links>();
public List<links> final_results = new List<links>();
public class links
{
public string url { get; set; }
public string title { get; set; }
public string description { get; set; }
public int place { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
结果在代码中获取它的值.唯一的Place属性可能会出现相同的记录,但其他属性是相同的.我想省略在网址,标题和说明中具有重复值的重复记录.我写了这段代码,但没有改变:
final_results = results .GroupBy(n => n.url).Select(g => g.FirstOrDefault()).ToList();
Run Code Online (Sandbox Code Playgroud)
但当我将我的重复器绑定到这个新列表时,没有任何改变.我怎么能省略这个重复值?
我希望能够在WinForms应用程序中的C#Visual Studio 2012中编写查询,该查询不会显示匹配的记录.假设我在Access DB中有一条记录,
JOHN SMITH MALE 19
JANE DOE FEMALE 19
JOHN SMITH MALE 19
Run Code Online (Sandbox Code Playgroud)
还有一个像这样的查询
SELECT a.NAME FROM [NAME] a WHERE a.NAME = JOHN SMITH
//but returns both records in the table
Run Code Online (Sandbox Code Playgroud)
我怎样才能从表中返回一条记录?任何帮助将非常感激.
c# ×5
list ×2
arrays ×1
asp.net ×1
linq-group ×1
ms-access ×1
properties ×1
reflection ×1
sql ×1
winforms ×1