<p>I'd like to know if there's an easier way to insert a record if it doesn't already exist in a table. I'm still trying to build my LINQ to SQL skills. </p>

<p>Here's what I've got, but it seems like there should be an easier way.</p>

<pre><code>public static TEntity InsertIfNotExists&lt;TEntity&gt;
(
    DataContext db,
    Table&lt;TEntity&gt; table,
    Func&lt;TEntity,bool&gt; where,
    TEntity record
)
    where TEntity : class
{
    TEntity existing = table.SingleOrDefault&lt;TEntity&gt;(where);

    if (existing != null)
    {
        return existing; 
    }
    else
    {
        table.InsertOnSubmit(record);

        // Can't use table.Context.SubmitChanges()
        // 'cause it's read-only

        db.SubmitChanges();
    }

    return record;
}
</code></pre>

```
```
public static void InsertIfNotExists<TEntity>
                    (this Table<TEntity> table,
                     TEntity entity,
                     Expression<Func<TEntity,bool>> predicate)
    where TEntity : class
{ 
    if (!table.Any(predicate)) 
    {
        table.InsertOnSubmit(record);
        table.Context.SubmitChanges();
    }
 }

table.InsertIfNotExists(entity, e=>e.BooleanProperty);
```
```