以下に示すように、結果をインターフェイスにキャストする Linq (to Objects) クエリを作成しようとしています。
var data = (from row in CicApplication.Vaporizer473Cache
where row.Coater == coater
select row).Cast<IVaporizerData>();
選択でインターフェイスのインスタンスを作成できないため、これが唯一の方法のようです。2 つの質問があります。
キャストは実際にどのように行われますか?ソース内の各プロパティを見つけて、その値を同じ名前のインターフェイス プロパティにコピーしますか?
ソースに含まれていないインターフェイスにプロパティがありますが、この操作中に何らかの方法でその値を設定したいと考えています。これは可能ですか?または、クエリの後に for each ステートメントで行う必要がありますか?
それが役立つ場合、データのソース (Vaporizer473Cache) のクラス定義は次のようになります。インターフェイスは非常に似ています。
internal class Vaporizer473
{
/// <summary>
/// Gets or sets the Coater property
/// </summary>
public string Coater { get; set; }
/// <summary>
/// Gets or sets the CoaterTime property
/// </summary>
public DateTime? CoaterTime { get; set; }
/// <summary>
/// Gets or sets the TemperatureLeftTubeA property
/// </summary>
public double? TemperatureLeftTubeA { get; set; }
/// <summary>
/// Gets or sets the TemperatureLeftTubeB property
/// </summary>
public double? TemperatureLeftTubeB { get; set; }
/// <summary>
/// Gets or sets the TemperatureRightTubeA property
/// </summary>
public double? TemperatureRightTubeA { get; set; }
/// <summary>
/// Gets or sets the TemperatureRightTubeB property
/// </summary>
public double? TemperatureRightTubeB { get; set; }
}