相关疑难解决方法(0)

使用linq选择distinct

我有班级班级

public class LinqTest
{
public int id { get; set; }
public string value { get; set; }
}


List<LinqTest> myList = new List<LinqTest>();
myList.Add(new LinqTest() { id = 1, value = "a" });
myList.Add(new LinqTest() { id = 1, value = "b" });
myList.Add(new LinqTest() { id = 2, value = "c" });
Run Code Online (Sandbox Code Playgroud)

我只需从该列表中选择不同的id.即,我的结果列表应该只包含

[{id=1,value="a"},{ id = 2, value = "c" }]
Run Code Online (Sandbox Code Playgroud)

我怎么能用linq做到这一点?

编辑

输入,

id      value
1        a
1        b
2        c
3        d
3        e
Run Code Online (Sandbox Code Playgroud)

出来应该是, …

c# linq class list

233
推荐指数
4
解决办法
62万
查看次数

获取不同的列表值

我有我想从一个获得C#应用程序List项目对象,其中包含不同对象另一个列表.

我试过这个

 List<Project> model = notre_admin.Get_List_Project_By_Expert(u.Id_user);
 if (model != null) model = model.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

列表模型仍包含4个相同的对象Project.

这是什么原因?我该如何解决?

.net c# asp.net asp.net-mvc

11
推荐指数
3
解决办法
9167
查看次数

使用LINQ的进程列表?

在我的c#MVC4应用程序中,我有一个字符串列表.列表中的每个奇数元素都是日期时间.每个元素之前的偶数元素是唯一标识符.

例如:[0]是A7M0066 [1]是2007-01-06 06:24:00.000

我想处理列表,并将奇数元素中基于日期时间的前5个最新对添加到另一个字符串列表中.我不知道从哪里开始,但我认为它将需要LINQ.

使用Keith在下面的答案和测试我意识到我实际需要的东西已经改变了.使用他的方法,我得到5个最近的结果,但其中3个具有相同的id.我需要最终结果都有一个唯一的ID.基本上我需要保留3个相同的条目中的1个并继续处理,直到所有5个条目都是唯一的.

c# linq string list asp.net-mvc-4

4
推荐指数
3
解决办法
1764
查看次数

从列表中获取不同的值

    public List<MAS_EMPLOYEE_TRANSFER> GetEmployeeTransferListForHR(TimecardDataContext TimecardDC)
    {
        List<MAS_EMPLOYEE_TRANSFER> objEmployeeTransferList = null;
        try
        {
            objEmployeeTransferList = new List<MAS_EMPLOYEE_TRANSFER>();
            objEmployeeTransferList = TimecardDC.MAS_EMPLOYEE_TRANSFER.Where(
                employee =>
                    employee.HR_ADMIN_IND=="Y").ToList();                
        }
        finally
        {
        }
        return objEmployeeTransferList;
    }
Run Code Online (Sandbox Code Playgroud)

它显示hr admin indicator = yes的所有值列表.但我必须hr admin=yes从表中得到并明确(empid)MAS_EMPLOYEE_TRANSFER.如何获得不同empId从的objEmployeeTransferList.

c# linq asp.net

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

从列表中找到不同的元素C#

我有一个名为 Product

public class Product
{
    public string Name{ get; set; }

    public int ProductId{ get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我有一个产品列表,相同Name但不同ProductId.

我想从列表中获得不同的产品 product.Name

即如果列表是

var fullproductList = {
        Name: product,
        ProductId: 1
    }, {
        Name: product,
        ProductId: 2
    }, {
        Name: product,
        ProductId: 3
    };
Run Code Online (Sandbox Code Playgroud)

我想要任何一个上面的产品.

我想实现这一点而不像这样循环:

List<Product> distinctProducts= new List<Product>();

var distictproductName=fullSubjectList.Select(x => x.Name).Distinct().ToList();

foreach (var item in distictproductName)
{
    distinctProducts.Add(fullproductList.Where(x=>x.Name==item).FirstOrDefault());
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

c# list distinct-values

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

仅从一个字段中查找对象列表中的不同值

如何从对象列表中选择不同的值?我想只获取特定字段的列表,而不是整个对象的列表.

例如,要查询的集合:

name   year
Item1  2009
Item2  2009
Item3  2010
Item4  2010
Item5  2011
Item6  2011
Run Code Online (Sandbox Code Playgroud)

从那以后我想回到不同年份来获得以下结果集合

2009
2010
2011
2012
Run Code Online (Sandbox Code Playgroud)

我试过了

distinctyears = myCollection.GroupBy(x => x.year).Select(x => x.First()).ToList();
Run Code Online (Sandbox Code Playgroud)

但这将返回整个对象的集合,而不是仅返回年份值.

.net c# linq distinct

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

如何在运行时优雅地将IEnumerable <T>转换为HashSet <T>而不事先知道T.

简而言之,我需要在编译时不知道转换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>).

c# reflection

0
推荐指数
2
解决办法
2030
查看次数