I am trying to get a row if it has the desired specific value, otherwise get the first or default:
dr = (from avTable in DAL.DataStore.DSet.Tables["Values1"].AsEnumerable() join pavTable in DAL.DataStore.DSet.Tables["Values2"].AsEnumerable() on avTable.Field<int>("PK") equals pavTable.Field<int>("FK_Value") where pavTable.Field<int>("FKI_ProductAttribute") == Value2 && avTable.Field<string>("Name") == "Specific Value" select avTable).FirstOrDefault() ?? (from avTable in DAL.DataStore.DSet.Tables["Values1"].AsEnumerable() join pavTable in DAL.DataStore.DSet.Tables["Values2"].AsEnumerable() on avTable.Field<int>("PK") equals pavTable.Field<int>("FK_Value") where pavTable.Field<int>("FKI_ProductAttribute") == Value2 select avTable).FirstOrDefault(); This smells. Is there a better way to do this?
I want to do something like this:
var dt = (from avTable in DAL.DataStore.DSet.Tables["Values1"].AsEnumerable() join pavTable in DAL.DataStore.DSet.Tables["Values2"].AsEnumerable() on avTable.Field<int>("PK") equals pavTable.Field<int>("FK_Value") where pavTable.Field<int>("FKI_ProductAttribute") == Value2 && avTable.Field<string>("Name") == "Specific Value" select avTable) DataRow dr = dt.Select("PK = Specified value"); If(dr==null) dr = dt.FirstOrDefault(); and then do a select based on a specified value. If that is null, then grab the first or default. This seems to be more DRY, but is it more or less efficient?. Also, I have a hard time doing a select on the dt based on the specific value (lack of Linq expertise and Google prowess to find the answer I am looking for).
FirstOrDefaultis supposed to work ...? I don't see anything that 'smells' ...unless there is some optimization to the query. But nothing I can really see ... \$\endgroup\$