0
私は1つのメソッドで作業しています。アーティストとアルバムの2つのモデルがあります。アーティストに属するArtistID
フィールドに基づいてアーティストに属するすべてのアルバムを表示したい私はViewModelを作ったのです。私はモデルとコントローラから分離した私のメソッドで動作するためにOperationsという別のクラスで作業しています。ラムダ式で作業していますが、ArtistID = id
パラメータの "where"条件を設定する方法はありません。あなたはこれを行う方法を知っていますか?メソッドは、2つのテーブルからjoinとwhere句を使用してViewModelを返します
これらはモデルです:
public class Artist
{
public int ArtistID { get; set; }
[Display(Name ="Artist name")]
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public virtual List<Album> Albums { get; set; }
}
public class Album
{
public int AlbumID { get; set; }
public string AlbumName { get; set; }
public virtual Artist Artist { get; set; }
public int ArtistID { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString ="{0: dd/MM/yyyy}")]
[Display(Name ="Date created")]
public DateTime DateCreated { get; set; }
}
これはViewModelにある:
public class ArtistAlbumVM
{
public int ArtistAge { get; set; }
public string ArtistName { get; set; }
public string ArtistLastName { get; set; }
public DateTime AlbumDate { get; set; }
public string AlbumName { get; set; }
}
そして、これは私が話しているmethdoで、私は「どこを設定する方法がわかりません「条件ArtistID = id
:
public class Operations
{
MusicStoreDbContext db = new MusicStoreDbContext();
public List<ArtistAlbumVM> GetAlbumsByArtist(int id)
{
var list = db.Albums.Join(db.Artists, al => al.ArtistID, ar => ar.ArtistID,
(al, ar) => new ArtistAlbumVM {
ArtistAge = ar.Age,
ArtistName =ar.Name,
ArtistLastName = ar.LastName,
AlbumDate = al.DateCreated,
AlbumName = al.AlbumName
});
}
}
私はあなたが彼のコードで参加を見落としたと思います。 –
@Reddy結果を制限するには、where句を指定するために['Where'](https://msdn.microsoft.com/en-us/library/bb534803(v = vs.100).aspx)メソッドを使用します。答えの主な部分は 'db.Albums.Where(s => s.ArtistID == id)'です。それで 'Album'と' Artist'の関係があれば 'Join'メソッドを使う必要はなく、' Album'の 'Artist'プロパティからアーティストに関する情報を得るだけで十分です。それ以外の場合は、あなたの質問と同様に 'Join'を使用することができます。 –
@RezaAghaeiはい、私はその論理を理解しました。私は既にモデルを持っています。そして、私の質問ではない:p –