-1

これが私のクラスです。

public class App
{
   public string Appname;
   public string Appcode;

}

次のようなアプリのリストがあります

List<App> apps;

のような同じオブジェクトの別のリスト

List<App> filteredapps;

今、2番目のリストと同じアプリ名を持つ最初のリストからフィルタリングする必要があります。どうすればこれを達成できますか

4

3 に答える 3

1

Enumerable.Intersect メソッドを使用する必要があります: http://msdn.microsoft.com/en-us/library/system.linq.enumerable.intersect.aspx

void Main()
{
    List<App> apps;
    List<App> filteredapps;

    var query=apps.Intersect(filteredapps,new AppComparer());


}
public class App
{
   public string Appname;
   public string Appcode;

}

class AppComparer : IEqualityComparer<App>
{

    public bool Equals(App x, App y)
    {

    if (Object.ReferenceEquals(x, y)) return true;


    if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
        return false;


    return x.Appname == y.Appname && x.Appcode == y.Appcode;
}

// If Equals() returns true for a pair of objects  
// then GetHashCode() must return the same value for these objects. 

public int GetHashCode(App product)
{
    //Check whether the object is null 
    if (Object.ReferenceEquals(App, null)) return 0;

    //Get hash code for the Name field if it is not null. 
    int hashProductName = product.Appname == null ? 0 : product.Appname.GetHashCode();

    //Get hash code for the Code field. 
    int hashProductCode = product.Appcode.GetHashCode();

    //Calculate the hash code for the product. 
    return hashProductName ^ hashProductCode;
}

}
于 2013-09-06T09:22:59.400 に答える
0
apps.where(a=>filteredApps.Select(fa=>fa.AppName).Contains(a.AppName))

また

var filteredNames = filteredApps.Select(fa=>fa.AppName);
apps.where(a=>filteredNames.Contains(a.AppName))
于 2013-09-06T09:15:53.790 に答える