我有一个数据库设置如下(不幸的是,不允许在此处发布图表图像,因此需要描述:响应表 - 包含 RespondentID、QuestionID、ResponseOptionID ResponseProperties - 包含 ResponsePropertyID、ResponsePropertyTypeID、名称 ResponsePropertyTypes - 包含 ResponsePropertyTypeID、名称
ResponsesInProperties(多对多表)- 包含 ResponseID、ResponsePropertyID
ResponsesInProperties 表上存在多对多关系。该表当然不会在 EF 中显示。
假设我有两个响应属性类型“Country”和“Wave”以及相应的 ResponeProperties“USA”、“UK”和“Wave2011”、“Wave2012”。
现在我需要从数据库中取回美国和 Wave2012 中的所有(而不是重复的)响应。诀窍是我需要的每个响应都必须在 Wave2012 和美国。我正在尝试使用 LINQ to SQL 来实现这一点。下面是我想出的 Linq,它为我提供了正确的记录,但它们针对不同的属性出现了很多次。限制属性不会给我任何记录....
任何帮助表示赞赏!
var responses = from r in db.Responses
from rp in r.ResponseProperties
select new
{
RespondentID = r.RespondentID,
QuestionCode = r.Question.Code,
ResponseOptionCode = r.ResponseOption.Code,
ResponseOptionCodeName = r.ResponseOption.Text,
ResponsePropertyName = rp.Name,
ResponsePropertyTypeName = rp.ResponsePropertyType.Name
};